Data Dictionary
Every field of the sealed records Aquadrio keeps: the hour of a grid's electricity, the index day and the index month, a facility's hour, a building's hour, a named power plant's hour, and the correction. Each table names a field by its full path in the record (an array as name[], a field of an array's elements as name[].field), its type, its unit, what it states, and an example from the sample records:
leave-behind/sample_hour_record.json, CAISO's hour ending 2026-06-29T23leave-behind/sample_index_record.json, MISO-Central's UTC day 2026-09-18leave-behind/sample_plant_record.json, Dearborn Industrial Generation's hour ending 2025-08-05T18measurement/agents/testdata/sample_facility_hour.json, a modeled campus on CAISO's sample hourmeasurement/agents/testdata/sample_building_hour.json, that campus's buildingmeasurement/agents/testdata/sample_correction_record.json, a correction of a plant's hour
Three record shapes appear in no sample above, and their examples come from other records the engine built: a building's priced line from measurement/agents/testdata/sample_building_hour_ford_field.json, an index month from the Index page's fixtures (web/tests/fixtures/upstream, built by scripts/index_fixture_series.py under the index check's test payload), and a plant's hour as Standard 0.9 seals it, with its valuation and its link to the grid hour, from Dearborn's hour ending 2025-08-05T18 as measurement/agents/test_valuation_block.py builds it on its fixture grid hour (the plant sample above was sealed before 0.9 and keeps its shape). The builders are measurement/agents/hour_record.py and measurement/agents/index_record.py. The seal's rule is docs/CERT_CANONICALIZATION.md. python scripts/dictionary_fields.py --check walks the six samples and names any path this document does not carry.
Conventions
Periods
An hour's period reads YYYY-MM-DDTHH and names the hour ending at that time, in UTC, as EIA-930 reports it: 2026-06-29T23 is the hour from 22:00 to 23:00 UTC. lag_hours runs from that close to sealed_at.
An index day's period reads YYYY-MM-DD and names a UTC day: the hours ending 01 through 23 of that date and the hour ending 00 of the next date. The day 2026-09-18 holds the periods 2026-09-18T01 through 2026-09-18T23 and 2026-09-19T00.
An index month's period reads YYYY-MM and names a UTC month: the UTC days of that month.
sealed_at reads UTC to the second, YYYY-MM-DDTHH:MM:SSZ, on every record.
Seals and Numbers
Every record carries canon_version, kind, its body under one key, and record_hash. The body sits under the key kind names (hour, facility_hour, building_hour, plant_hour, correction), apart from the two index kinds, whose body sits under index. record_hash is the SHA-256 of the record's canonical form with its top-level record_hash and signature left out: keys sorted, numbers at fixed places (six by default, four inside a generation mix), strings in Unicode NFC. A record_hash deeper in a record is a link to another sealed record, and a changed link breaks the seal of the record that holds it. The records carry no signature yet. node leave-behind/verify_record.mjs <file> recomputes any seal.
A figure prints to the places the record states it: gallons per MWh to two places, percents to the tenth, energy to four places on a site's record, dollars to the cent, and dollars per MWh to four places. A field the record states as null holds no value for that line, as a group with no ceiling holds no percent of prescription.
Labels
origin reads real on a record built from the grid's published data or from federal filings (every hour's record, a named site's records, and an index record built from real hours), and simulated on a modeled site's record. A record names what it models in plain words: an hour's hour.water.basis reads modeled from 2024 plant data; a site's load_basis reads modeled; a building's building_hour.compute.cooling_water.basis reads modeled; a plant's plant_hour.water.basis and plant_hour.modeled[] say how its water is modeled; a priced line's basis names the schedule's place (utility serving the place or nearest published rate).
Whole-Hour Rule
An hour is sealed only when its fuel rows are whole: it carries, with a value, every fuel code that held at least 5 percent of the grid's generation in any of the 48 hours before it. A half-loaded daily file renormalizes to a clean mix, so an hour short of a fuel is left unsealed until its rows arrive. The first record of an hour stands, and no sealed record is edited.
Short-Day Rule
An index day is sealed once it is older than yesterday in UTC and all 24 of its hours are sealed. A day still short of its 24 hours seals over the hours it has once it is more than seven days old: its index.hours_sealed counts them, its index.short reads true, and its level is taken over those hours alone. An index month is sealed once it has ended and each of its days holds a record or is past the seven days with no hours at all.
Basin Groups
A basin line's group is one of these ids, and its label is the name the records print. A group that carries a ceiling is held against it; a group with no ceiling prints "no grade" as its result. Each id names the basin group a plant's water is attributed to; the table lists the groups and the units that place them.
| Group id | Label as printed | Grid | Units that place it |
|---|---|---|---|
mississippi | Mississippi | MISO-Central | regions 05, 06, 07, 08, 10, 11; Dayton Hydro (EIA 10520) by hand |
great_lakes | Great Lakes | MISO-Central, PJM | region 04 |
groundwater_municipal | Groundwater and municipal | every grid | the declared water source |
upper_columbia | Upper Columbia | BPA | subregions 1701, 1702, 1703 |
middle_lower_columbia | Middle and Lower Columbia | BPA | subregions 1707, 1708 |
snake | Snake | BPA, NEVP | subregions 1704, 1705, 1706 |
willamette | Willamette | BPA | subregion 1709 |
coastal_puget_sound | Coastal and Puget Sound | BPA | subregions 1710, 1711 |
oregon_closed_basins | Oregon closed basins | BPA | subregion 1712 |
sacramento | Sacramento | CAISO | subregion 1802 |
san_joaquin | San Joaquin | CAISO | subregion 1804 |
tulare_buena_vista | Tulare-Buena Vista Lakes | CAISO | subregion 1803 |
san_francisco_bay | San Francisco Bay | CAISO | subregion 1805 |
coastal | Coastal | CAISO | subregions 1801, 1806, 1807 |
desert_basins | Desert basins | CAISO, NEVP | subregions 1808, 1809, 1810 |
lower_colorado | Lower Colorado | CAISO, AZPS, SRP, NEVP, PNM, TEPC, WALC | region 15; on the Southwest's grids also the water a conveyance carries, by its name (the Central Arizona Project, the Salt River Project's canals) |
upper_colorado | Upper Colorado | AZPS, PNM, WALC | region 14 |
great_basin | Great Basin | CAISO, NEVP, WALC | region 16 |
pacific_ocean_seawater | Pacific Ocean (seawater) | CAISO | the declared water source; no ceiling |
ohio | Ohio | PJM | region 05 |
mid_atlantic | Mid-Atlantic | PJM | region 02 |
upper_mississippi | Upper Mississippi | PJM | region 07 |
south_atlantic | South Atlantic | PJM | region 03 |
tennessee | Tennessee | PJM | region 06 |
texas_gulf | Texas-Gulf | ERCOT | region 12 |
rio_grande | Rio Grande | ERCOT, PNM, EPE | region 13 |
arkansas_white_red | Arkansas-White-Red | ERCOT, PNM | region 11 |
estuary_ocean | Estuary and ocean (saline and brackish) | PJM, ERCOT | the cooling systems' declared saline or brackish water; no ceiling |
outside_footprint | Outside the footprint | any | water from a fuel with no plant in the grid's footprint; no ceiling |
Fields Every Record Carries
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
canon_version | string | The canonical form's ruleset the seal is computed under: "2" for every record here. | "2" | |
kind | string | The kind of record, which names the key its body sits under: hour, facility_hour, building_hour, plant_hour, correction, index_day, or index_month. | "hour" | |
record_hash | string | hex | The record's seal: 64 lowercase hexadecimal characters. | "091981c2b471…" |
Hour Record
One grid, one hour of electricity (kind hour). Example: leave-behind/sample_hour_record.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
hour | object | The hour's body. | ||
hour.record_id | string | The record's id: hour_<jurisdiction>_<period>. | "hour_CAISO_2026-06-29T23" | |
hour.jurisdiction | string | The meter's grid: MISO-CENTRAL, BPA, CAISO, PJM, ERCOT, or one of the Southwest's AZPS, SRP, NEVP, PNM, TEPC, EPE, and WALC. | "CAISO" | |
hour.period | string | UTC | The hour ending, YYYY-MM-DDTHH. | "2026-06-29T23" |
hour.mark | string | MINTED when the hour's carbon result and its water result both read pass; RECORDED otherwise. | "MINTED" | |
hour.origin | string | real: the hour is built from the grid's published data. | "real" | |
hour.feed | string | The public feed the hour's mix and demand come from. | "EIA-930 Hourly Electric Grid Monitor" | |
hour.respondent | string | The feed's respondent code for the grid. | "CISO" | |
hour.feed_note | string or null | The territory the feed's figure covers: demand net of rooftop solar on CAISO, the feed covers all of MISO on MISO-Central, null on BPA, PJM, ERCOT, and the Southwest's seven. | "demand net of rooftop solar" | |
hour.sealed_at | string | UTC | When the record was sealed. | "2026-09-21T18:45:44Z" |
hour.lag_hours | number | hours | Hours from the hour's close to sealed_at, to the tenth. | 2011.8 |
hour.water | object | The hour's gridwater: the water consumed at the plants to generate the hour's electricity. | ||
hour.water.term | string | The quantity's name. | "gridwater" | |
hour.water.gal_per_mwh | number | gallons per MWh | The water consumed upstream to generate one MWh of the hour's electricity. | 64.17 |
hour.water.plant_cooling_gal_per_mwh | number | gallons per MWh | The part consumed in plant cooling. | 60.81 |
hour.water.reservoir_evaporation_gal_per_mwh | number | gallons per MWh | The part evaporated from hydroelectric reservoirs. | 3.36 |
hour.water.by_fuel_gal_per_mwh | object | gallons per MWh | Each fuel's part of the hour's gallons per MWh; the seven add to hour.water.gal_per_mwh. | |
hour.water.by_fuel_gal_per_mwh.coal | number | gallons per MWh | Coal's part. | 0.0 |
hour.water.by_fuel_gal_per_mwh.gas | number | gallons per MWh | Natural gas's part. | 4.58 |
hour.water.by_fuel_gal_per_mwh.hydro | number | gallons per MWh | Hydroelectric's part, its reservoirs' evaporation. | 3.36 |
hour.water.by_fuel_gal_per_mwh.nuclear | number | gallons per MWh | Nuclear's part. | 27.14 |
hour.water.by_fuel_gal_per_mwh.other | number | gallons per MWh | Every other fuel's part. | 10.38 |
hour.water.by_fuel_gal_per_mwh.solar | number | gallons per MWh | Solar's part. | 18.71 |
hour.water.by_fuel_gal_per_mwh.wind | number | gallons per MWh | Wind's part. | 0.0 |
hour.water.basins[] | array | One line for each basin group the hour's water left, the most water first. | ||
hour.water.basins[].group | string | The basin group's id (Basin Groups). | "lower_colorado" | |
hour.water.basins[].label | string | The group's name as the record prints it. | "Lower Colorado" | |
hour.water.basins[].gal_per_mwh | number | gallons per MWh | The water this group gave up for one MWh of the hour's electricity. | 2.73 |
hour.water.basins[].pct_of_hour | number | percent | The group's share of the hour's water, to the tenth. | 4.2 |
hour.water.basins[].s | number or null | The group's stress factor in force for the hour: the group's ceiling is 198 gallons per MWh times S times the group's share of the grid's generation. Null where the group has no ceiling. | 0.75 | |
hour.water.basins[].ceiling_gal_per_mwh | number or null | gallons per MWh | The group's ceiling under the embedded-water prescription in force, read on the local date the hour closed for a group whose S changes by season. | 5.0 |
hour.water.basins[].pct_of_prescription | number or null | percent | The line's gallons per MWh over its ceiling, times 100, to the tenth, read off the two figures the line prints. | 54.6 |
hour.water.basins[].result | string | under when the group's gallons are strictly under its ceiling, at or over otherwise, and no grade for a group with no ceiling. | "under" | |
hour.water.basins[].valuation | object or null | The line's valuation from Standard 0.9 (Valuation Block): its gallons within and over its ceiling for the hour, valued. Null on a group with no ceiling, and on every line while no ratified valuation payload states its figures for the hour's UTC day. | ||
hour.water.highest_pct_of_prescription | number or null | percent | The highest percent of prescription among the lines that carry one. | 54.6 |
hour.water.highest_group | string or null | The group that holds it; a tie goes to the first line in the record's order. | "lower_colorado" | |
hour.water.basis | string | How the hour's water is modeled. | "modeled from 2024 plant data" | |
hour.water.result | string | pass when every group that carries a ceiling is under it, fail otherwise. | "pass" | |
hour.water.reason | string | The water result in a sentence, naming each group at or over its ceiling. | "every graded basin under its ceiling" | |
hour.water.valuation | object or null | The record's own sum of its lines' dollars from Standard 0.9 (Valuation Block); null while no ratified payload is in force for the hour's UTC day. | ||
hour.generation_mix | object | percent | The hour's generation by fuel, percent of its MWh, to two places. Since 2026-11-02 the feed's battery storage code (BAT) is dropped from the hour's rows before the mix is normalized; storage's negative values (charging) have always been clamped to zero. Since 2026-11-03 a grid's code map reads a feed code onto another fuel after that drop: on SRP, EPE, and WALC the feed's solar with integrated battery storage (SNB) is solar, and on every other grid it is other. An hour is sealed only when its rows carry at least three fuel codes and generation at or over its grid's completeness floor, the lower of 500 MW and 10 percent of the grid's shoulder dial (93 MW on EPE, 95 on WALC, and 500 on every grid metered before the Southwest's). | |
hour.generation_mix.coal | number | percent | Coal's share. | 0.0 |
hour.generation_mix.gas | number | percent | Natural gas's share. | 4.24 |
hour.generation_mix.hydro | number | percent | Hydroelectric's share. | 0.21 |
hour.generation_mix.nuclear | number | percent | Nuclear's share. | 10.09 |
hour.generation_mix.other | number | percent | Every other fuel's share. | 3.46 |
hour.generation_mix.solar | number | percent | Solar's share. | 71.96 |
hour.generation_mix.wind | number | percent | Wind's share. | 10.04 |
hour.carbon | object | The hour's carbon intensity against its threshold. | ||
hour.carbon.intensity_g_per_kwh | number | grams CO2 per kWh | The hour's carbon intensity from its mix, to two places. | 78.05 |
hour.carbon.threshold_g_per_kwh | number | grams CO2 per kWh | The threshold the intensity is read against. | 100.0 |
hour.carbon.result | string | pass at or under the threshold, fail over it. | "pass" | |
hour.carbon.reason | string | The carbon result in a sentence. | "78.05 is at or under 100" | |
hour.demand | object | The grid's demand in the same hour. | ||
hour.demand.gw | number | GW | The grid's demand for the period, as the feed reports it, to three places. | 27.578 |
hour.demand.peak_band_gw | number | GW | The demand above which the grid is at peak. | 34.59 |
hour.demand.at_peak | boolean | True when the demand is over the peak band. | false | |
vintage | object | The versions of the Standard and the tables the record was built with. | ||
vintage.standard_version | string | The Standard in force when the record was sealed. | "0.9" | |
vintage.emission_factor_table_version | string | The carbon emission factors. | "ef-2026-07-06" | |
vintage.cooling_mix_table_version | string | The regional cooling mix by fuel. | "cm-eia860-923-2024" | |
vintage.water_factor_table_version | string | The water consumption factors by fuel and cooling type. | "wf-2026-06-13" | |
vintage.basin_shares_table_version | string | Each fuel's water split by basin group. | "bs-eia860-923-2024-r3" | |
vintage.rate_table_version | string | The water rate table a site's priced lines read. | "water-rates-r3" | |
vintage.embedded_water_prescription | object | The embedded-water prescription the hour's basin lines are read against. | ||
vintage.embedded_water_prescription.version | string | The grid's prescription version. | "1" | |
vintage.embedded_water_prescription.p_gal_per_mwh | number | gallons per MWh generated | Aquadrio's bar, the 198 that every group's ceiling scales. | 198.0 |
vintage.embedded_water_prescription.boundary | string | The test: a group passes strictly under its ceiling. | "strict_under" | |
vintage.embedded_water_prescription.derivation_ref | string | The grid's prescription memo. | "calibration/water/EMBEDDED_WATER_GRID_MEMO_2026-09-21_CAISO.md" | |
vintage.valuation_version | string or null | From Standard 0.9, the valuation payload the hour's lines are valued under; null when none was in force for the hour's UTC day. | "valuation-1" |
The Hours' Rows
The Hours carry each sealed hour as one row of hours.csv, each column's unit in its name, and hours.parquet holds the same columns typed. After each basin group's four columns stand the valuation's: the record's own sum, then each group's gallons within and over its ceiling and their dollars, read from the line's valuation block. A record sealed before Standard 0.9 carries no block, and a line with no ceiling carries none, so those cells are empty (null in Parquet). The index records in index.json carry the valuation of every hour in the span, including the hours sealed before Standard 0.9; a span's value is the sum of its index day records' dollars. The examples are the sample hour's row, its Lower Colorado line standing for <group>.
| Column | Type | Unit | What it states | Example |
|---|---|---|---|---|
valuation_dollars | number | dollars | The record's valuation, hour.water.valuation.dollars. Empty for an hour sealed before Standard 0.9 or valued under no ratified payload. | 1010.02 |
valuation_dollars_per_mwh | number | dollars per MWh | hour.water.valuation.dollars_per_mwh: those dollars over the hour's MWh. | 0.0366 |
valuation_version | string | hour.water.valuation.version: the valuation payload's version. | valuation-1 | |
<group>_within_ceiling_gallons | number | gallons | The line's valuation.within_ceiling_gallons: the group's gallons within its ceiling for the hour. Empty on a line with no ceiling. | 75287.9 |
<group>_over_ceiling_gallons | number | gallons | The line's valuation.over_ceiling_gallons: its gallons above its ceiling. | 0 |
<group>_valuation_dollars | number | dollars | The line's valuation.dollars: the two parts valued. | 75.09 |
Index Day Record
One grid, one UTC day (kind index_day, Standard 0.8). A day's level is its gallons over its MWh, each hour's gallons taken as the hour's sealed gallons per MWh times its sealed demand in MWh, summed exactly at the records' own places. Example: leave-behind/sample_index_record.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
index | object | The day's body. | ||
index.record_id | string | The record's id: index_day_<jurisdiction>_<period>. | "index_day_MISO-CENTRAL_2026-09-18" | |
index.jurisdiction | string | The meter's grid. | "MISO-CENTRAL" | |
index.footprint | string or null | The territory the grid's figures cover: all of MISO on MISO-Central, demand net of rooftop solar on CAISO, null on BPA, PJM, ERCOT, and the Southwest's seven. | "all of MISO" | |
index.period | string | UTC | The UTC day, YYYY-MM-DD. | "2026-09-18" |
index.origin | string | real when every hour the day reads is real. | "real" | |
index.sealed_at | string | UTC | When the record was sealed. | "2026-10-22T12:00:00Z" |
index.hours_expected | integer | hours | The hours a UTC day holds. | 24 |
index.hours_sealed | integer | hours | The sealed hours the day reads. | 24 |
index.short | boolean | True when the day sealed over fewer than 24 hours (Short-Day Rule). | false | |
index.demand_mwh | number | MWh | The day's demand: the sum of its hours' demand in MWh. | 1596756.0 |
index.basis | object or null | The yearly gallons per MWh basis the grid publishes, with its own footprint; null on BPA. | ||
index.basis.gal_per_mwh | number | gallons per MWh | The basis. | 321 |
index.basis.footprint | string | The territory the basis covers. | "MISO-Central" | |
index.basis.table | string | The payload the basis comes from. | "fwb-eia860-923-2024-r2" | |
index.water | object | The day's gridwater. | ||
index.water.term | string | The quantity's name. | "gridwater" | |
index.water.gal_per_mwh | number | gallons per MWh | The day's level: its gallons over its MWh, to two places. | 300.59 |
index.water.gallons | number | gallons | The day's gallons, to the tenth. | 479968886.0 |
index.water.basins[] | array | One line for each basin group, in the order of the day's first hour. | ||
index.water.basins[].group | string | The basin group's id. | "mississippi" | |
index.water.basins[].label | string | The group's name as the record prints it. | "Mississippi" | |
index.water.basins[].gal_per_mwh | number | gallons per MWh | The group's level: its gallons over the day's MWh, to two places. | 193.48 |
index.water.basins[].gallons | number | gallons | The group's gallons for the day, to the tenth. | 308940350.9 |
index.water.basins[].ceiling_gal_per_mwh | number or null | gallons per MWh | The group's ceiling for the day: the one its hours print, or, where it changed inside the day, the mean of the hourly ceilings weighted by each hour's MWh, to two places. | 87.2 |
index.water.basins[].ceiling_varied | boolean | True when the group's ceiling changed inside the day. | false | |
index.water.basins[].s | number or null | The group's one S in force over the day; null where it varied or the group has no ceiling. | 1.0 | |
index.water.basins[].pct_of_prescription | number or null | percent | The line's level over its ceiling, times 100, to the tenth. | 221.9 |
index.water.basins[].result | string | under when the group's gallons are strictly under its ceiling over the day, at or over otherwise, no grade with no ceiling. | "at or over" | |
index.water.basins[].valuation | object or null | The line's valuation (Valuation Block); null while the valuation payload in force is unratified, and on a group with no ceiling. | ||
index.water.highest_pct_of_prescription | number or null | percent | The highest percent of prescription among the day's lines. | 221.9 |
index.water.highest_group | string or null | The group that holds it. | "mississippi" | |
index.water.valuation | object or null | The record's own sum of its lines' dollars (Valuation Block); null while unratified. | ||
hours[] | array | Each constituent hour, in period order. | ||
hours[].period | string | UTC | The hour's period. | "2026-09-18T01" |
hours[].record_hash | string | hex | The hour's seal, a link: a changed hour breaks the day's seal. | "f8d52fa9b0ec…" |
vintage | object | The versions the record was built with. | ||
vintage.standard_version | string | The Standard in force. | "0.8" | |
vintage.embedded_water_ceilings_version | string | The ceilings payload's version. | "5" | |
vintage.embedded_water_ceilings_id | string | The ceilings payload's id. | "embedded-water-ceilings" | |
vintage.valuation_version | string | The valuation payload the record names. | "valuation-1" | |
vintage.valuation_ratified | boolean | True when that payload was ratified, so the record carries dollars. | true |
Index Month Record
One grid, one UTC month (kind index_month). A month reads its day records' printed figures: its gallons and MWh are their sums, and each line's level, ceiling, percent, and result follow the day's rules over the month. It carries the day's fields under index apart from index.hours_expected and index.short, and adds the fields below. Example: MISO-Central's 2026-08 in the Index page's fixtures.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
index.days_expected | integer | days | The days the UTC month holds. | 31 |
index.days_sealed | integer | days | The day records the month reads. | 31 |
index.hours_sealed | integer | hours | The sum of its days' sealed hours. | 744 |
days[] | array | Each constituent day record, in period order. | ||
days[].period | string | UTC | The day's period. | "2026-08-01" |
days[].record_hash | string | hex | The day record's seal, a link: a changed day breaks the month's seal. | "4a2d00d7b07d…" |
A month's index.record_id reads index_month_<jurisdiction>_<period>, as index_month_MISO-CENTRAL_2026-08.
Valuation Block
Aquadrio's valuation of a record's gallons, by the ratified method, while the valuation payload in force is ratified: a group's gallons within its ceiling valued at the base reference and its gallons above it at the scarcity step, each reference read per acre-foot on the UTC day the record's period belongs to and converted at the payload's gallons per acre-foot. An index record carries it from Standard 0.8: a day splits each hour's gallons against that hour's ceiling and sums the parts; a month sums its days' parts and dollars. From Standard 0.9 the hour, a facility's and a building's hour, and a plant's hour carry the same block (On Every Record below). The examples in this table are the sample index record's, valued under valuation-1.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
index.water.basins[].valuation.within_ceiling_gallons | number | gallons | The group's gallons within its ceiling, to the tenth. | 139237123.2 |
index.water.basins[].valuation.over_ceiling_gallons | number | gallons | Its gallons above its ceiling, to the tenth. | 169703227.7 |
index.water.basins[].valuation.dollars | number | dollars | The two parts valued, to the cent. | 651340.77 |
index.water.basins[].valuation.dollars_per_mwh | number | dollars per MWh | Those dollars over the record's MWh, to four places. | 0.4079 |
index.water.basins[].valuation.base_reference | object | The reference the gallons within the ceiling are valued at. | ||
index.water.basins[].valuation.base_reference.name | string or array | Its name; on a month, each name in force over the month. | "Bureau of Reclamation, Lower Colorado River Basin System Conservation and Efficiency Program (Bucket 1), cost per acre-foot by agreement start year" | |
index.water.basins[].valuation.base_reference.dollars_per_acre_foot | number or array | dollars per acre-foot | Its figure in force on the day; on a month, each figure in force. | 325.0 |
index.water.basins[].valuation.scarcity_step | object | The reference the gallons above the ceiling are valued at. | ||
index.water.basins[].valuation.scarcity_step.name | string or array | Its name. | "Metropolitan Water District of Southern California, full service untreated volumetric cost per acre-foot, as adopted" | |
index.water.basins[].valuation.scarcity_step.dollars_per_acre_foot | number or array | dollars per acre-foot | Its figure in force. | 984.0 |
index.water.basins[].valuation.gallons_per_acre_foot | number or array | gallons per acre-foot | The conversion the payload states. | 325851 |
index.water.basins[].valuation.version | string or array | The valuation payload's version. | "valuation-1" | |
index.water.valuation.dollars | number | dollars | The sum of the record's own lines' dollars, to the cent. | 915119.5 |
index.water.valuation.dollars_per_mwh | number | dollars per MWh | That sum over the record's MWh, to four places. | 0.5731 |
index.water.valuation.version | string or array | The payload's version. | "valuation-1" |
On Every Record
From Standard 0.9 every record that states gallons by basin group carries its valuation, each graded line's block with the fields above and each record's sum of its own lines' dollars, inside the one record; nothing adds dollars across records. Each kind splits its gallons at the ceiling from the figures it already prints:
- The hour's record: a graded line's gallons within the ceiling are the lesser of its gallons per MWh and its ceiling, times the hour's MWh (
hour.demand.gwtimes 1,000), and its gallons over the ceiling are its gallons per MWh above the ceiling times the hour's MWh, never below zero. This is the hour arithmetic the index day performs, so a day's hours' dollars sum to the day's within the rounding of 24 hours at a cent each. - A facility's and a building's record: a graded line's gallons over the ceiling are its
over_prescription_gallons, and the rest of its gallons are within it, over the block'senergy_mwh. The cooling water of a building's compute block carries no valuation. - A plant's hour: the plant's gallons over the ceiling are its gallons times the share of the grid hour's line for the plant's basin group that sits above the line's ceiling (its gallons per MWh less its ceiling, over its gallons per MWh), rounded half up to the tenth, and the rest are within it, over the plant's net MWh. The record names the grid hour it read (
plant_hour.electricity_hour).
A line with no ceiling, an hour of no energy or no generation, and a record whose UTC day has no ratified payload in force carry valuation: null; the record seals all the same. A record sealed before 0.9 carries no block, and a reader values it from its own lines and the payload in force on its day. The price block beside it is the comparison line at the utility's rate.
On the hour's record (examples: the sample hour's Lower Colorado line and the hour's own sum):
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
hour.water.basins[].valuation.within_ceiling_gallons | number | gallons | The line's gallons within its ceiling for the hour, to the tenth. | 75287.9 |
hour.water.basins[].valuation.over_ceiling_gallons | number | gallons | Its gallons above its ceiling, to the tenth. | 0.0 |
hour.water.basins[].valuation.dollars | number | dollars | The two parts valued, to the cent. | 75.09 |
hour.water.basins[].valuation.dollars_per_mwh | number | dollars per MWh | Those dollars over the hour's MWh, to four places. | 0.0027 |
hour.water.basins[].valuation.base_reference | object | The reference the gallons within the ceiling are valued at. | ||
hour.water.basins[].valuation.base_reference.name | string | Its name. | "Bureau of Reclamation, Lower Colorado River Basin System Conservation and Efficiency Program (Bucket 1), cost per acre-foot by agreement start year" | |
hour.water.basins[].valuation.base_reference.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 325.0 |
hour.water.basins[].valuation.scarcity_step | object | The reference the gallons above the ceiling are valued at. | ||
hour.water.basins[].valuation.scarcity_step.name | string | Its name. | "Metropolitan Water District of Southern California, full service untreated volumetric cost per acre-foot, as adopted" | |
hour.water.basins[].valuation.scarcity_step.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 984.0 |
hour.water.basins[].valuation.gallons_per_acre_foot | number | gallons per acre-foot | The conversion the payload states. | 325851 |
hour.water.basins[].valuation.version | string | The valuation payload's version. | "valuation-1" | |
hour.water.valuation.dollars | number | dollars | The sum of the hour's own lines' dollars, to the cent. | 1010.02 |
hour.water.valuation.dollars_per_mwh | number | dollars per MWh | That sum over the hour's MWh, to four places. | 0.0366 |
hour.water.valuation.version | string | The payload's version. | "valuation-1" |
On a facility's and a building's record, each over its own energy (examples: the sample building's groundwater and municipal line and its own sum; the facility of one building prints the same figures):
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
facility_hour.embedded_water.basins[].valuation, building_hour.embedded_water.basins[].valuation | object or null | The line's valuation; null on a group with no ceiling. | ||
facility_hour.embedded_water.basins[].valuation.within_ceiling_gallons, building_hour.embedded_water.basins[].valuation.within_ceiling_gallons | number | gallons | The line's gallons less its gallons over the prescription, to the tenth. | 622.5 |
facility_hour.embedded_water.basins[].valuation.over_ceiling_gallons, building_hour.embedded_water.basins[].valuation.over_ceiling_gallons | number | gallons | The line's gallons over the prescription, to the tenth. | 0.0 |
facility_hour.embedded_water.basins[].valuation.dollars, building_hour.embedded_water.basins[].valuation.dollars | number | dollars | The two parts valued, to the cent. | 0.62 |
facility_hour.embedded_water.basins[].valuation.dollars_per_mwh, building_hour.embedded_water.basins[].valuation.dollars_per_mwh | number | dollars per MWh | Those dollars over the block's energy, to four places. | 0.0124 |
facility_hour.embedded_water.basins[].valuation.base_reference, building_hour.embedded_water.basins[].valuation.base_reference | object | The base reference. | ||
facility_hour.embedded_water.basins[].valuation.base_reference.name, building_hour.embedded_water.basins[].valuation.base_reference.name | string | Its name. | "Bureau of Reclamation, …" | |
facility_hour.embedded_water.basins[].valuation.base_reference.dollars_per_acre_foot, building_hour.embedded_water.basins[].valuation.base_reference.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 325.0 |
facility_hour.embedded_water.basins[].valuation.scarcity_step, building_hour.embedded_water.basins[].valuation.scarcity_step | object | The scarcity step. | ||
facility_hour.embedded_water.basins[].valuation.scarcity_step.name, building_hour.embedded_water.basins[].valuation.scarcity_step.name | string | Its name. | "Metropolitan Water District of Southern California, …" | |
facility_hour.embedded_water.basins[].valuation.scarcity_step.dollars_per_acre_foot, building_hour.embedded_water.basins[].valuation.scarcity_step.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 984.0 |
facility_hour.embedded_water.basins[].valuation.gallons_per_acre_foot, building_hour.embedded_water.basins[].valuation.gallons_per_acre_foot | number | gallons per acre-foot | The conversion the payload states. | 325851 |
facility_hour.embedded_water.basins[].valuation.version, building_hour.embedded_water.basins[].valuation.version | string | The valuation payload's version. | "valuation-1" | |
facility_hour.embedded_water.valuation, building_hour.embedded_water.valuation | object or null | The record's own sum of its lines' dollars; null while no ratified payload is in force for the hour's UTC day. | ||
facility_hour.embedded_water.valuation.dollars, building_hour.embedded_water.valuation.dollars | number | dollars | The sum, to the cent. | 1.84 |
facility_hour.embedded_water.valuation.dollars_per_mwh, building_hour.embedded_water.valuation.dollars_per_mwh | number | dollars per MWh | That sum over the block's energy, to four places. | 0.0368 |
facility_hour.embedded_water.valuation.version, building_hour.embedded_water.valuation.version | string | The payload's version. | "valuation-1" |
On a plant's hour (examples: Dearborn's hour ending 2025-08-05T18 on the fixture grid hour, valued at 2025's figures):
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
plant_hour.water.valuation | object or null | The plant's gallons valued; null with no grid hour named, on a group with no ceiling on that hour, on an hour of no generation, and while no ratified payload is in force for the hour's UTC day. | ||
plant_hour.water.valuation.within_ceiling_gallons | number | gallons | The plant's gallons less its part over the ceiling, to the tenth. | 62941.4 |
plant_hour.water.valuation.over_ceiling_gallons | number | gallons | The plant's gallons times the grid hour line's share above its ceiling, rounded half up to the tenth. | 29110.4 |
plant_hour.water.valuation.dollars | number | dollars | The two parts valued, to the cent. | 158.74 |
plant_hour.water.valuation.dollars_per_mwh | number | dollars per MWh | Those dollars over the plant's net MWh, to four places. | 0.1991 |
plant_hour.water.valuation.base_reference | object | The base reference. | ||
plant_hour.water.valuation.base_reference.name | string | Its name. | "Bureau of Reclamation, …" | |
plant_hour.water.valuation.base_reference.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 400.0 |
plant_hour.water.valuation.scarcity_step | object | The scarcity step. | ||
plant_hour.water.valuation.scarcity_step.name | string | Its name. | "Metropolitan Water District of Southern California, …" | |
plant_hour.water.valuation.scarcity_step.dollars_per_acre_foot | number | dollars per acre-foot | Its figure in force on the hour's UTC day. | 912.0 |
plant_hour.water.valuation.gallons_per_acre_foot | number | gallons per acre-foot | The conversion the payload states. | 325851 |
plant_hour.water.valuation.version | string | The valuation payload's version. | "valuation-1" |
Facility Record
One site, one hour (kind facility_hour), led by the gridwater its buildings drew. Example: measurement/agents/testdata/sample_facility_hour.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
facility_hour | object | The facility's body. | ||
facility_hour.record_id | string | The record's id: facility_<facility_id>_<period>. | "facility_bay-inland_2026-06-29T23" | |
facility_hour.level | string | The level of the hierarchy. | "facility" | |
facility_hour.facility_id | string | The site's id. | "bay-inland" | |
facility_hour.name | string | The site's name. | "Bay Inland" | |
facility_hour.facility_kind | string | What the site is. | "data center campus" | |
facility_hour.place | string | Where the site stands. | "East Bay, CA" | |
facility_hour.jurisdiction | string | The grid the site draws from. | "CAISO" | |
facility_hour.period | string | UTC | The hour ending. | "2026-06-29T23" |
facility_hour.mark | string | MINTED when every building at the site that produces compute is MINTED; RECORDED otherwise, a site with no compute included. | "MINTED" | |
facility_hour.origin | string | simulated on a modeled site; real on a named site. | "simulated" | |
facility_hour.load_basis | string | How the site's energy is known. | "modeled" | |
facility_hour.sealed_at | string | UTC | When the record was sealed. | "2026-09-21T18:45:44Z" |
facility_hour.electricity_hour | object | A link to the grid hour the site's water reads. | ||
facility_hour.electricity_hour.record_id | string | The hour's record id. | "hour_CAISO_2026-06-29T23" | |
facility_hour.electricity_hour.record_hash | string | hex | The hour's seal, a link. | "091981c2b471…" |
facility_hour.electricity_hour.mark | string | The hour's mark. | "MINTED" | |
facility_hour.embedded_water | object | The site's gridwater for the hour, from the hour's sealed figures. | ||
facility_hour.embedded_water.term | string | The quantity's name. | "gridwater" | |
facility_hour.embedded_water.energy_mwh | number | MWh | The energy the site drew, to four places: the sum of its buildings'. | 50.0 |
facility_hour.embedded_water.hour_gal_per_mwh | number | gallons per MWh | The hour's gallons per MWh as the hour's record prints it. | 64.17 |
facility_hour.embedded_water.gallons | number | gallons | The energy times the hour's gallons per MWh, to the tenth. | 3208.5 |
facility_hour.embedded_water.basins[] | array | One line for each of the hour's basin lines. | ||
facility_hour.embedded_water.basins[].group | string | The basin group's id. | "groundwater_municipal" | |
facility_hour.embedded_water.basins[].label | string | The group's name. | "Groundwater and municipal" | |
facility_hour.embedded_water.basins[].gallons | number | gallons | The energy times the group's gallons per MWh, to the tenth. | 622.5 |
facility_hour.embedded_water.basins[].over_prescription_gallons | number or null | gallons | The energy times the group's gallons per MWh above its ceiling, never below zero; null with no ceiling. | 0.0 |
facility_hour.embedded_water.over_prescription_gallons | number | gallons | The sum of the lines' gallons over the prescription. | 0.0 |
facility_hour.embedded_water.basins[].valuation | object or null | From Standard 0.9, the line's valuation over the site's energy (Valuation Block, On Every Record); null on a group with no ceiling. | ||
facility_hour.embedded_water.valuation | object or null | From Standard 0.9, the record's own sum of its lines' dollars, valued on the site's own energy (Valuation Block). | ||
facility_hour.buildings[] | array | Each building's record at the site, as a link. | ||
facility_hour.buildings[].building_id | string | The building's id. | "bay-inland-1" | |
facility_hour.buildings[].record_id | string | Its record's id. | "building_bay-inland-1_2026-06-29T23" | |
facility_hour.buildings[].record_hash | string | hex | Its record's seal, a link. | "2b431c3fd5dd…" |
facility_hour.buildings[].mark | string | Its record's mark. | "MINTED" |
A site whose place has a water rate on file carries a facility_hour.price block of the building's shape below, with one priced line for its gridwater.
Building Record
One building at a site, one hour (kind building_hour). Example: measurement/agents/testdata/sample_building_hour.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
building_hour | object | The building's body. | ||
building_hour.record_id | string | The record's id: building_<building_id>_<period>. | "building_bay-inland-1_2026-06-29T23" | |
building_hour.level | string | The level of the hierarchy. | "building" | |
building_hour.building_id | string | The building's id. | "bay-inland-1" | |
building_hour.name | string | The building's name. | "Bay Inland, building 1" | |
building_hour.facility_id | string | The site the building stands at. | "bay-inland" | |
building_hour.produces_compute | boolean | True for a building that runs compute; only such a building carries building_hour.compute. | true | |
building_hour.jurisdiction | string | The grid the building draws from. | "CAISO" | |
building_hour.period | string | UTC | The hour ending. | "2026-06-29T23" |
building_hour.mark | string | MINTED when its electricity hour is MINTED, its cooling water is strictly under the building prescription, and the grid is off peak; RECORDED otherwise, and always without compute. | "MINTED" | |
building_hour.origin | string | simulated on a modeled site; real on a named site. | "simulated" | |
building_hour.load_basis | string | How the building's energy is known. | "modeled" | |
building_hour.sealed_at | string | UTC | When the record was sealed. | "2026-09-21T18:45:44Z" |
building_hour.electricity_hour | object | A link to the grid hour. | ||
building_hour.electricity_hour.record_id | string | The hour's record id. | "hour_CAISO_2026-06-29T23" | |
building_hour.electricity_hour.record_hash | string | hex | The hour's seal, a link. | "091981c2b471…" |
building_hour.electricity_hour.mark | string | The hour's mark. | "MINTED" | |
building_hour.embedded_water | object | The building's gridwater for the hour, from the hour's sealed figures. | ||
building_hour.embedded_water.term | string | The quantity's name. | "gridwater" | |
building_hour.embedded_water.energy_mwh | number | MWh | The energy the building drew, to four places. | 50.0 |
building_hour.embedded_water.hour_gal_per_mwh | number | gallons per MWh | The hour's gallons per MWh. | 64.17 |
building_hour.embedded_water.gallons | number | gallons | The energy times the hour's gallons per MWh, to the tenth. | 3208.5 |
building_hour.embedded_water.basins[] | array | One line for each of the hour's basin lines. | ||
building_hour.embedded_water.basins[].group | string | The basin group's id. | "desert_basins" | |
building_hour.embedded_water.basins[].label | string | The group's name. | "Desert basins" | |
building_hour.embedded_water.basins[].gallons | number | gallons | The energy times the group's gallons per MWh, to the tenth. | 482.5 |
building_hour.embedded_water.basins[].over_prescription_gallons | number or null | gallons | The energy times the group's gallons per MWh above its ceiling, never below zero; null with no ceiling. | 0.0 |
building_hour.embedded_water.over_prescription_gallons | number | gallons | The sum of the lines' gallons over the prescription. | 0.0 |
building_hour.embedded_water.basins[].valuation | object or null | From Standard 0.9, the line's valuation over the building's energy (Valuation Block, On Every Record); null on a group with no ceiling. | ||
building_hour.embedded_water.valuation | object or null | From Standard 0.9, the record's own sum of its lines' dollars (Valuation Block). The compute block's cooling water carries no valuation. | ||
building_hour.compute | object | The building's compute hour. | ||
building_hour.compute.it_energy_mwh | number | MWh | The energy its compute drew, to four places. | 50.0 |
building_hour.compute.cooling_water | object | The water the building's own cooling consumed. | ||
building_hour.compute.cooling_water.wue_l_per_kwh | number | liters per kWh | The building's water use effectiveness. | 0.35 |
building_hour.compute.cooling_water.gallons | number | gallons | The energy times the effectiveness, in gallons, to the tenth. | 4623.0 |
building_hour.compute.cooling_water.cooling_type | string | The building's cooling. | "closed-loop" | |
building_hour.compute.cooling_water.basis | string | How the effectiveness is known. | "modeled" | |
building_hour.compute.building_prescription | object | The building prescription in force. | ||
building_hour.compute.building_prescription.ceiling_l_per_kwh | number | liters per kWh | Its ceiling. | 1.8 |
building_hour.compute.building_prescription.source | string | Where the ceiling comes from. | "interim default" | |
building_hour.compute.building_prescription.boundary | string | The test: strictly under. | "strict_under" | |
building_hour.compute.building_prescription.result | string | under or at or over. | "under" | |
building_hour.compute.grid_peak | object | The grid's demand in the hour. | ||
building_hour.compute.grid_peak.at_peak | boolean | True when the grid is at peak. | false | |
building_hour.compute.grid_peak.demand_gw | number | GW | The grid's demand. | 27.578 |
building_hour.compute.grid_peak.peak_band_gw | number | GW | The grid's peak band. | 34.59 |
building_hour.compute.reasons[] | array of strings | The building's mark in three sentences: the electricity hour, the cooling water, the peak. | "the grid is off peak" |
A building whose place has a water rate on file carries a price block, the comparison line beside its valuation, and so does its facility's record (facility_hour.price, with its gridwater line alone). Example: measurement/agents/testdata/sample_building_hour_ford_field.json, Ford Field's hour ending 2026-09-22T04, sealed before Standard 0.9.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
building_hour.price | object | The comparison line: the building's water at the published rate of the utility that serves its place. | ||
building_hour.price.figure | string | What the block is: from Standard 0.9 comparison line at the utility's rate; a block sealed before 0.9 reads valuation. | "valuation" | |
building_hour.price.place_key | string | The place in the water rate table. | "detroit-mi" | |
building_hour.price.utility | string | The utility whose schedule values the water. | "Detroit Water and Sewerage Department" | |
building_hour.price.line | string | The schedule's line as printed. | "Water Volume Usage Tier 2 (greater than 6 CCF*) $5.121" | |
building_hour.price.printed_rate | number | dollars per the schedule's unit | The rate as the schedule prints it. | 5.121 |
building_hour.price.printed_unit | string | The schedule's unit. | "CCF" | |
building_hour.price.gallons_per_unit | number | gallons | Gallons in one of the schedule's units. | 748.052 |
building_hour.price.usd_per_gallon | number | dollars per gallon | The rate per gallon, sealed for recomputation. | 0.0068457808 |
building_hour.price.effective_from | string | The date the schedule took effect. | "2026-07-01" | |
building_hour.price.table_version | string | The rate table. | "water-rates-r3" | |
building_hour.price.basis | string | utility serving the place or nearest published rate. | "utility serving the place" | |
building_hour.price.lines[] | array | One line for each water quantity the record states: its gridwater, and its cooling water on a building with compute. No line or block holds a total. | ||
building_hour.price.lines[].what | string | The quantity the line values: gridwater or cooling water. | "gridwater" | |
building_hour.price.lines[].gallons | number | gallons | The quantity in gallons. | 860.3 |
building_hour.price.lines[].schedule_quantity | number | the schedule's unit | The quantity in the schedule's unit, to three places. | 1.15 |
building_hour.price.lines[].schedule_unit | string | The schedule's unit. | "CCF" | |
building_hour.price.lines[].dollars | number | dollars | The schedule quantity times the printed rate, to the cent. | 5.89 |
building_hour.price.lines[].over_prescription_gallons | number | gallons | On the gridwater line, its gallons over the prescription. | 351.2 |
building_hour.price.lines[].over_prescription_schedule_quantity | number | the schedule's unit | Those gallons in the schedule's unit, to three places. | 0.469 |
building_hour.price.lines[].over_prescription_dollars | number | dollars | That quantity times the printed rate, to the cent. | 2.4 |
A Building Record's Rows
A Building Record carries each of the building's hourly records as one row of records.csv, each column's unit in its name. Three columns carry the record's valuation, and the local rate's columns after them read its price block, the comparison line. summary.json states the span's value at the index as the sum of the rows' index_dollars. The examples are the sample building's hour as its row prints it.
| Column | Type | Unit | What it states | Example |
|---|---|---|---|---|
index_dollars | number | dollars | The record's valuation, building_hour.embedded_water.valuation.dollars. A record sealed before Standard 0.9 carries no block, and its row carries the same figure computed from the record's lines and the payload in force on the UTC day of its period. Blank where no payload is in force on that day. | 1.84 |
index_within_ceiling_gallons | number | gallons | The gallons the valuation values within the ceilings: the sum of the graded lines' within_ceiling_gallons. | 1836 |
index_over_ceiling_gallons | number | gallons | The gallons it values above them: the sum of the graded lines' over_ceiling_gallons. | 0 |
Plant Record
One named power plant, one hour (kind plant_hour). Example: leave-behind/sample_plant_record.json, Fermi's hour ending 2026-10-24T06, sealed under Standard 0.9 from the NRC's daily level; the fields the EPA feed states (gross load, the net-to-gross ratios, the classes, the unit columns) take their examples from the Dearborn fixture hour, measurement/agents/testdata/sample_plant_hour_dearborn.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
plant_hour | object | The plant's body. | ||
plant_hour.record_id | string | The record's id: plant_<plant_code>_<period>. | "plant_1729_2026-10-24T06" | |
plant_hour.level | string | The level of the hierarchy. | "facility" | |
plant_hour.facility_id | string | The site's id: eia-<plant_code>. | "eia-1729" | |
plant_hour.facility_kind | string | What the site is. | "power plant" | |
plant_hour.name | string | The plant's name as EIA-860 lists it. | "Fermi" | |
plant_hour.plant_code | integer | The plant's EIA plant code. | 1729 | |
plant_hour.owners[] | array | The plant's owners of record as EIA-860 lists them. | ||
plant_hour.owners[].name | string | The owner's name. | "DTE Electric Company" | |
plant_hour.owners[].source | string | The EIA-860 schedule that names the owner. | "EIA-860 Schedule 2 (2___Plant), utility of record; …" | |
plant_hour.owners[].generators | object | percent | The owner's share of each operable generator, keyed by the generator's EIA-860 id. | {"GT 1": 100.0, "GT2": 100.0, …} |
plant_hour.place | string | The plant's county and state. | "Wayne County, MI" | |
plant_hour.jurisdiction | string | The meter's grid for the plant's balancing authority. | "MISO-CENTRAL" | |
plant_hour.balancing_authority | string | The balancing authority as EIA-860 lists it. | "MISO" | |
plant_hour.period | string | UTC | The hour ending. | "2026-10-24T06" |
plant_hour.mark | string | RECORDED: a plant's record carries no other mark. | "RECORDED" | |
plant_hour.origin | string | real: the plant's inputs are federal filings. | "real" | |
plant_hour.sealed_at | string | UTC | When the record was sealed. | "2026-09-20T12:00:00Z" |
plant_hour.lag_hours | number | hours | Hours from the hour's close to sealed_at, to the tenth. | 57.6 |
plant_hour.electricity_hour | object | From Standard 0.9, a link to the sealed grid hour of the same period on the plant's grid, whose line for the plant's basin group splits the plant's gallons at the ceiling; a plant's hour is written only once that hour is sealed. | ||
plant_hour.electricity_hour.record_id | string | The grid hour's record id. | "hour_MISO-CENTRAL_2026-10-24T06" | |
plant_hour.electricity_hour.record_hash | string | hex | The grid hour's seal, a link. | "244cc58f3c74…" |
plant_hour.electricity_hour.mark | string | The grid hour's mark. | "RECORDED" | |
plant_hour.generation | object | The hour's generation as the federal feed states it. | ||
plant_hour.generation.net_mwh | number | MWh | The hour's net generation: the classes' net MWh summed (the EPA feed), or the day's level times the reactor's capacity (the NRC feed). | 1141 |
plant_hour.generation.gross_mwh | number | MWh | The hour's gross load from EPA's hourly file. | 474.0 |
plant_hour.generation.feed | string | The federal feed: EPA's hourly emissions file, or the NRC's power reactor status report for a nuclear plant. | "NRC power reactor status report, daily percent of full power" | |
plant_hour.generation.basis | string | How the net MWh is read from the feed. | "the day's percent of full power times the unit's EIA-860 net summer capacity, …" | |
plant_hour.generation.net_to_gross | object | The ratios that turn each class's activity into net MWh. | ||
plant_hour.generation.net_to_gross.year | integer | The year the ratios are read over. | 2024 | |
plant_hour.generation.net_to_gross.basis | string | How the ratios are set. | "each class's EIA-923 net generation for the year over the class's own EPA activity …" | |
plant_hour.generation.net_to_gross.class_ratios[] | array | One ratio for each class of the plant's units. | ||
plant_hour.generation.net_to_gross.class_ratios[].kind | string | The class: steam, combined_cycle, or simple_cycle. | "steam" | |
plant_hour.generation.net_to_gross.class_ratios[].ratio | number | MWh per unit of activity | The class's ratio. | 0.43043223 |
plant_hour.generation.units_gross_mwh | object | MWh | Each EPA unit's gross load in the hour, keyed by the unit's EPA id. | {"BL1100": 0.0, "GT2100": 160.0, …} |
plant_hour.generation.units_steam_klb | object | thousand pounds of steam | Each EPA unit's steam load in the hour, keyed by the unit's EPA id; only a plant whose units raise steam carries it. | {"BL1100": 261.0, …} |
plant_hour.generation.epa_date | string | The date of EPA's row, as EPA stamps it. | "2025-08-05" | |
plant_hour.generation.epa_hour | integer | The hour of EPA's row, the hour beginning on Eastern Standard Time. | 12 | |
plant_hour.generation.time_convention | string | How the feed's stamp maps to the record's period. | "the NRC reports one power level per calendar day at the plant, read on Eastern Standard Time; …" | |
plant_hour.generation.unit | string | The reactor the NRC's level is reported for (a nuclear plant). | "Fermi 2" | |
plant_hour.generation.report_date | string | The local calendar day the NRC's level is reported for (a nuclear plant). | "2026-10-24" | |
plant_hour.generation.percent_power | number | percent of full power | The NRC's level for the day, held flat across the day's 24 hours (a nuclear plant). | 100 |
plant_hour.generation.net_summer_capacity_mw | number | MW | The reactor's EIA-860 net summer capacity, which the level is taken of (a nuclear plant). | 1141 |
plant_hour.water | object | The water the hour's generation consumed at the plant. | ||
plant_hour.water.gallons | number | gallons | The hour's gallons, to the tenth: the classes' gallons summed, or the net MWh times the plant's cooling-typed factor where the feed states one level. | 766752 |
plant_hour.water.gal_per_mwh | number | gallons per MWh | The gallons over the net MWh, to four places. | 672 |
plant_hour.water.cooling_type | string | The plant's cooling. | "tower" | |
plant_hour.water.water_source | string | The plant's declared water source. | "Lake Erie" | |
plant_hour.water.basin_group | string | The basin group the source places the plant in. | "great_lakes" | |
plant_hour.water.basis | string | How the water is modeled. | "modeled: the hour's net generation times the plant's cooling-typed consumption factor" | |
plant_hour.water.water_factor_table_version | string | The water factor table. | "wf-2026-06-13" | |
plant_hour.water.fuel | string | The plant's fuel as the register classes it, where the water is one factor for the plant. | "nuclear" | |
plant_hour.water.classes[] | array | One line for each class of the plant's units. | ||
plant_hour.water.classes[].kind | string | The class. | "steam" | |
plant_hour.water.classes[].units[] | array of strings | The class's EPA unit ids. | "BL1100" | |
plant_hour.water.classes[].activity | number | the class's activity unit | The class's activity in the hour. | 761.0 |
plant_hour.water.classes[].activity_unit | string | MWh gross or thousand lb steam. | "thousand lb steam" | |
plant_hour.water.classes[].ratio | number | The class's net-to-gross ratio. | 0.43043223 | |
plant_hour.water.classes[].net_mwh | number | MWh | The activity times the ratio, to four places. | 327.5589 |
plant_hour.water.classes[].gal_per_mwh | number | gallons per MWh | The class's own consumption factor. | 184.2256 |
plant_hour.water.classes[].gallons | number | gallons | The net MWh times the factor, to the tenth. | 60344.7 |
plant_hour.water.valuation | object or null | From Standard 0.9, the plant's gallons valued, split by the grid hour's line for its basin group (Valuation Block, On Every Record). | ||
plant_hour.modeled[] | array of strings | Each modeled figure, in a plain sentence. | "the water is modeled: …" | |
plant_hour.register_version | string | The named-sites register the plant's entry comes from. | "named-sites-r2" | |
plant_hour.price | object | The comparison line: the plant's water at the published rate of the utility that serves its place. | ||
plant_hour.price.figure | string | What the block is: from Standard 0.9 comparison line at the utility's rate; a block sealed before 0.9 reads valuation. | "comparison line at the utility's rate" | |
plant_hour.price.place_key | string | The place in the water rate table. | "frenchtown-township-mi" | |
plant_hour.price.utility | string | The utility whose schedule values the water. | "Frenchtown Charter Township" | |
plant_hour.price.line | string | The schedule's line as printed. | "Effective January 1, 2026 the rates to be charged for water service shall be …" | |
plant_hour.price.printed_rate | number | dollars per the schedule's unit | The rate as the schedule prints it. | 4.12 |
plant_hour.price.printed_unit | string | The schedule's unit. | "CCF" | |
plant_hour.price.gallons_per_unit | number | gallons | Gallons in one of the schedule's units. | 748.052 |
plant_hour.price.usd_per_gallon | number | dollars per gallon | The rate per gallon, sealed for recomputation. | 0.0055076385 |
plant_hour.price.effective_from | string | The date the schedule took effect. | "2026-01-01" | |
plant_hour.price.table_version | string | The rate table. | "water-rates-r3" | |
plant_hour.price.basis | string | utility serving the place or nearest published rate. | "utility serving the place" | |
plant_hour.price.lines[] | array | One line for each water quantity the record states; no line or block holds a total. | ||
plant_hour.price.lines[].what | string | The quantity the line values. | "plant cooling water" | |
plant_hour.price.lines[].gallons | number | gallons | The quantity in gallons. | 766752 |
plant_hour.price.lines[].schedule_quantity | number | the schedule's unit | The quantity in the schedule's unit, to three places. | 1024.998 |
plant_hour.price.lines[].schedule_unit | string | The schedule's unit. | "CCF" | |
plant_hour.price.lines[].dollars | number | dollars | The schedule quantity times the printed rate, to the cent. | 4222.99 |
A place valued at the nearest published rate adds nearest_system, site_latitude, site_longitude, and distance_km to its price block, and a place with no schedule on file for the hour carries an empty lines list and a reason.
Correction Record
A new sealed record naming a record it corrects (kind correction). No sealed record is edited or deleted. Example: measurement/agents/testdata/sample_correction_record.json.
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
correction | object | The correction's body. | ||
correction.record_id | string | The record's id: correction_<corrected record_id>_<sealed_at without its dashes and colons>. | "correction_plant_1733_2025-08-04T22_20260920T120000Z" | |
correction.corrects | object | The record corrected. | ||
correction.corrects.record_id | string | Its id. | "plant_1733_2025-08-04T22" | |
correction.corrects.record_hash | string | hex | Its seal, a link. | "8d0cdd073099…" |
correction.corrects.kind | string | Its kind. | "plant_hour" | |
correction.corrects.period | string | UTC | Its period. | "2025-08-04T22" |
correction.corrects.sealed_at | string | UTC | When it was sealed. | "2026-09-20T12:00:00Z" |
correction.reason | string | Why the record is corrected. | "the hour's generation was restated after EPA published a revised row for unit 2" | |
correction.note | string or null | A note beside the reason. | null | |
correction.jurisdiction | string | The corrected record's grid. | "MISO-CENTRAL" | |
correction.period | string | UTC | The corrected record's period. | "2025-08-04T22" |
correction.mark | string | RECORDED. | "RECORDED" | |
correction.origin | string | The corrected record's origin, simulated where it carries none. | "real" | |
correction.sealed_at | string | UTC | When the correction was sealed. | "2026-09-20T12:00:00Z" |
API Keys
The API's hours, index, and sites routes (/api/hours/, /api/index/, and /api/sites/ on aquadrio.com) answer a request with no key at the public tier and a request with a key at the standard tier. A key travels in the request header x-api-key.
| Tier | Header | Requests a minute | Calls a month |
|---|---|---|---|
| public | none | 240 from one address, across the hours, index, and sites routes | no cap |
| standard | x-api-key | 600 for the key's subscription | 50,000 for the key's subscription, counted per UTC month |
- A key reads
aq_and then its payload and its signature, joined by a dot. It names the Stripe subscription that bought it, its tier, and its expiry, and it works while that subscription readsactivein Stripe. - A key that fails its signature, has expired, names a tier the API does not sell, or belongs to a subscription that no longer reads
activeanswers401. - A request past the key's requests for the minute, or past its calls for the month, answers
429withretry-after, the seconds to wait: to the end of the minute, or to the start of the next UTC month. - The month's calls are counted in the web host's memory, so a deploy starts every count afresh.
- The web host reads each subscription's status from Stripe once an hour; in an hour when Stripe does not answer, a key passes on its signature.
Notice
The Notice mails a subscriber when what the subscriber watches crosses its prescription: one basin group on one grid, or one building on one grid. Each crossing is an event in its grid's list of events, which names the sealed index day record it reads.
- A basin group's event is recorded by the index pass when it seals a day record whose line for the group reads
at or over. The pass records events for the days it seals and for no other day. The event's period is the day, and its figure is the line'spct_of_prescriptionto the tenth, as221.9% of prescription. - A building's event is taken by the daily send from its grid's sealed day records: the building's MWh a day times each graded group's gallons above its ceiling for one MWh of the day, summed over the days the grid has sealed in the month of its newest sealed day. A group's gallons above its ceiling for one MWh are the line's
valuation.over_ceiling_gallonsover the record'sindex.demand_mwh; a line with no ceiling adds nothing. A sum above zero is the building's event for the month, recorded once, and its figure is the sum to the tenth, as4,800.0 gallons over the prescription this month. Itsrecord_idnames the newest sealed day the sum reaches. - One event stands for each grid, kind, subject, and period: the first one recorded.
- The send runs once a day. It mails each event recorded in the last 48 hours that is not yet marked sent and reports a day no more than eight days old to every subscriber of the event's kind and subject whose subscription reads
activein Stripe, then marks the event sent once every one of its mails has gone. An event whose mail failed is mailed again by the next day's send. - Each mail names the subject and the grid, the day, the figure, and the sealed day record's address on the API,
https://aquadrio.com/api/index/<day>?j=<grid>. - Stripe holds the subscriptions. Every change of a subscription's status reaches the grid's list of subscribers through Stripe's webhook, and the daily send reads every subscription from Stripe before it mails.
Notice Events
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
id | integer | The event's number in its grid's list. | 1 | |
jurisdiction | string | The grid. | "MISO-CENTRAL" | |
kind | string | basin for a basin group's day, building for a building's month. | "basin" | |
subject | string | The basin group's id (Basin Groups), or the building's key: the id of its Stripe subscription. | "mississippi" | |
label | string | The group's label as the record prints it, or the building's name. | "Mississippi" | |
period | string | UTC | The day, YYYY-MM-DD, of a basin group's event; the month, YYYY-MM, of a building's. | "2026-09-18" |
figure | string | The figure the mail prints. | "221.9% of prescription" | |
record_id | string | The sealed index day record the event reads: the day itself, or the newest sealed day of the building's month. | "index_day_MISO-CENTRAL_2026-09-18" | |
recorded_at | string | UTC | When the event was recorded, to the second. | "2026-10-23T06:52:07Z" |
sent_at | string or null | UTC | When the send marked the event mailed; null until then. | null |
Notice Subscribers
| Field | Type | Unit | What it states | Example |
|---|---|---|---|---|
id | integer | The subscriber's number in its grid's list. | 1 | |
jurisdiction | string | The grid the subscriber watches. | "MISO-CENTRAL" | |
kind | string | basin or building. | "basin" | |
subject | string | The basin group's id, or the building's key. | "mississippi" | |
email | string | Where the mails go. | "watcher@example.com" | |
label | string | The group's label, or the building's name. | "Mississippi" | |
load_mwh_per_day | number or null | MWh | A building's load times 24; null for a basin group. | null |
stripe_subscription_id | string | The Stripe subscription the subscriber holds, one row for each. | "sub_1QkXb2L3m9N0pQrS" | |
status | string | The subscription's status as Stripe states it; the Notice mails a subscriber whose status reads active. | "active" | |
updated_at | string | UTC | When the row last changed, to the second. | "2026-10-22T07:00:00Z" |