---
title: Measure v2 migration guide
description: Measure v2 technical migration guide
---

 pre, code, pre code { white-space: pre-wrap !important; word-wrap: break-word !important; overflow-x: auto; }

[Skip to content](https://help.regrow.ag/measure-v2-migration-guide#main-content)

English

Show submenu for translations

[Customer portal](https://help.regrow.ag/support?hsLang=en)

![Regrow\_logo-1.png\]](https://help.regrow.ag/hs-fs/hubfs/03.%20Logos/Regrow_logo-1.png?height=40&name=Regrow_logo-1.png)

Open main navigation

Close main navigation

- English
  
  Show submenu for translations
- [Customer portal](https://help.regrow.ag/support)
- [Go to regrow.ag](https://www.regrow.ag/)

[Go to regrow.ag](https://www.regrow.ag/)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Knowledge Base](https://help.regrow.ag/?hsLang=en)
2. [Measure API v2](https://help.regrow.ag/measure-api-v2?hsLang=en)

# Measure v2 migration guide

## Technical guide for migrating from Intervention and Inventory v0 to unified Measure v2

*This migration guide is intended for clients to prepare to move over to Measure API v2. It has been broken into two sections to cover changes in the Inventory module v0 and Intervention module v0 separately.*

### **Inventory v0 Migration**

#### **Project Configuration**

Endpoint:

`v0/inventory/projects` -\>

`/v2/measure/projects`

Inventory V0 project creation takes its input as query parameters. Measure V2 instead takes a single JSON request body, and unifies project creation across outcome types (Inventory and Intervention) behind one endpoint. You must now declare which outcome(s) you want via the new required outcomes field.

| **Inventory V0 (query parameter)** | **Measure V2 (JSON body field)** | **Notes** |
| --- | --- | --- |
| project\_name | project\_name | Unchanged |
| is\_test | is\_test | Unchanged, defaults to false |
| *(none)* | outcomes | New, required. Must include "Inventory" |
| calculate\_gases\_percentages | *(none)* | Removed — see below |

#### **Removed**

- calculate\_gases\_percentages query parameter — there is no equivalent field in Measure V2, gas-percentage breakdowns are no longer available.

#### **Example**

Inventory V0:

```
curl -X POST "https://api.regrow.ag/dndc-scenarios-service/v0/inventory/projects?project_name=my_project&is_test=true" \-H "x-consumer-id: <your_consumer_id>"
```

Measure V2:

```
curl -X POST "https://api.regrow.ag/dndc-scenarios-service/v2/measure/projects" \-H "Content-Type: application/json" \-H "x-consumer-id: <your_consumer_id>" \-d '{ "project_name": "my_project", "outcomes": ["Inventory"], "is_test": true}'
```

### **Field Input**

Endpoint:

`/v0/inventory/projects/{project_name}/fields` →

`/v2/measure/projects/{project_name}/fields`

The request body is structurally similar — a field name, location, soil, a list of cultivation cycles (each with management events), and reporting information — but several fields have been renamed, narrowed, or dropped.

| **Inventory V0** | **Measure V2** | **Notes** |
| --- | --- | --- |
| field\_name | name | Renamed |
| location (latlon, boundary, or area/area\_unit, all optional) | location (boundary only, required) | Narrowed — every field must now be submitted as a GeoJSON polygon boundary; point/lat-lon and area-only submissions are no longer accepted |
| soil (optional) | soil (optional) | Narrowed to ph, clay\_fraction, bulk\_density, soc, and topsoil\_depth; defaults are used for any property not provided. |
| start\_year (optional) | *(none)* | Removed — see enrollment\_date |
| *(none)* | enrollment\_date (required) | New — must equal the start date of one of the submitted cultivation cycles, and must be on or before the reporting\_period start\_date |
| cultivation\_cycles | cultivation\_cycles | Same concept/shape — see event types below |
| reporting\_information.crop\_name | reporting\_information.crop\_name | Unchanged |
| reporting\_information.crop\_yield (required) | reporting\_information.crop\_yield\_in\_kg\_per\_ha (required) | Renamed with explicit units in kilogram per hectare, other unit types are not supported. |

#### **Minimum historical cultivation cycle data**

Both Inventory V0 and Measure V2 require at least 3 years of cultivation-cycle history before a reference date. They differ in which date the requirement is measured against and how the duration is computed:

|  | **Inventory V0** | **Measure V2** |
| --- | --- | --- |
| Anchor date | reporting\_information.start\_date | enrollment\_date |
| Measured from | Earliest cultivation\_cycle.start\_date (or start\_year, if set and earlier) | Earliest cultivation\_cycle.start\_date |

Because Measure V2's enrollment\_date must fall on a cultivation cycle's start date and also must fall on or before reporting\_information.start\_date, satisfying Inventory V0's 3-year requirement (measured to reporting period start) does not guarantee satisfying Measure V2's (measured to enrollment date, which can be earlier). When migrating, re-check your earliest cultivation cycle against enrollment\_date specifically, not just your old reporting period start date.

#### **Event types supported**

The following management event types are unchanged between Inventory V0 and Measure V2 (same shape, nested under each cultivation cycle's management\_events): irrigation, till, flood, cropping, fertilizer, organic\_amendment, fire

#### **Deprecated event types no longer supported**

- application — Please use fertilizer and/or organic\_amendment instead.
- graze
- tile\_drainage

#### **Example JSON payloads**

The examples below show a field input with 5 years of cultivation-cycle history (2016–2020) in the shape of the Inventory V0 JSON payload and an equivalent payload for Measure V2.

Inventory V0:

```
 {  "field_name": "my_field",  "location": {    "boundary": {      "type": "Polygon",      "coordinates": [[[-90.1, 41.5], [-90.1, 41.6], [-90.0, 41.6], [-90.0, 41.5], [-90.1, 41.5]]]    }  },  "cultivation_cycles": [    {      "start_date": "2016-01-01",      "end_date": "2016-12-31",      "management_events": {        "cropping": [          {"start_date": "2016-05-01", "end_date": "2016-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2017-01-01",      "end_date": "2017-12-31",      "management_events": {        "cropping": [          {"start_date": "2017-05-01", "end_date": "2017-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2018-01-01",      "end_date": "2018-12-31",      "management_events": {        "cropping": [          {"start_date": "2018-05-01", "end_date": "2018-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2019-01-01",      "end_date": "2019-12-31",      "management_events": {        "cropping": [          {"start_date": "2019-05-01", "end_date": "2019-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2020-01-01",      "end_date": "2020-12-31",      "management_events": {        "cropping": [          {"start_date": "2020-05-01", "end_date": "2020-10-15", "name": "corn"}        ],        "fertilizer": [          {"date": "2020-05-01", "name": "urea", "amount": 150, "depth": 5}        ]      }    }  ],  "reporting_information": {    "start_date": "2020-01-01",    "end_date": "2020-12-31",    "crop_name": "corn",    "crop_yield": 180  }}
```

### Measure v2

```
{  "name": "my_field",  "location": {    "boundary": {      "type": "Polygon",      "coordinates": [[[-90.1, 41.5], [-90.1, 41.6], [-90.0, 41.6], [-90.0, 41.5], [-90.1, 41.5]]]    }  },  "enrollment_date": "2020-01-01",  "cultivation_cycles": [    {      "start_date": "2016-01-01",      "end_date": "2016-12-31",      "management_events": {        "cropping": [          {"start_date": "2016-05-01", "end_date": "2016-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2017-01-01",      "end_date": "2017-12-31",      "management_events": {        "cropping": [          {"start_date": "2017-05-01", "end_date": "2017-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2018-01-01",      "end_date": "2018-12-31",      "management_events": {        "cropping": [          {"start_date": "2018-05-01", "end_date": "2018-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2019-01-01",      "end_date": "2019-12-31",      "management_events": {        "cropping": [          {"start_date": "2019-05-01", "end_date": "2019-10-15", "name": "corn"}        ]      }    },    {      "start_date": "2020-01-01",      "end_date": "2020-12-31",      "management_events": {        "cropping": [          {"start_date": "2020-05-01", "end_date": "2020-10-15", "name": "corn"}        ],        "fertilizer": [          {"date": "2020-05-01", "name": "urea", "amount": 150, "depth": 5}        ]      }    }  ],  "reporting_information": {    "start_date": "2020-01-01",    "end_date": "2020-12-31",    "crop_name": "corn",    "crop_yield_in_kg_per_ha": 11296  }}
```

### **Project Response**

Endpoint:

`GET /v0/inventory/projects/{project_name}`→

`GET /v2/measure/projects/{project_name}`

This section details the differences between the V0 Inventory project response and the Measure V2 project response.

The top-level response shape has changed: Inventory V0 returned a schema with (crop\_level, field\_level, field\_level\_value) top level keys, while Measure V2 returns project metadata directly at the top level (project\_type, dndc\_version, api\_version, total\_number\_of\_fields, total\_area\_ha) alongside inventory\_outcomes — all Inventory emissions data lives under this key (which can be null if the project is not configured for Inventory outcomes).

#### **Key concepts**

- Tier 3 Inventory V0 output fields are under LandEmissions and LandRemovals in Measure V2. Removals and Emissions are now separated. biogenic\_removals and biogenic\_emissions DSOC values are relative to the atmosphere (emissions are positive values, removals are negative values).
- Inventory V0 used AR5 conversion factors for CO2e results. For Measure V2 this has been updated to using AR6 conversion factors.
- Null values represent quantification that could not be made, not 0 emission/removal values.

| **Inventory V0** | **Measure V2** | **Notes** |
| --- | --- | --- |
| crop\_level (an object keyed by crop name) | inventory\_outcomes.crop\_level (a list) | **Restructured** from an object to a list; crop\_name becomes a field on each item instead of a key |
| crop\_yield (bushels) | total\_crop\_yield\_kg | **Renamed** + unit change: bushels → kilograms |
| number\_of\_acres | total\_area\_ha | **Renamed** + unit change: acres → hectares |
| number\_of\_fields | number\_of\_fields | **Unchanged** |
| direct\_n2o\_emissions / indirect\_n2o\_emissions / soil\_ch4\_emissions / soc (flat, tonnes CO2e) | reporting\_period.land\_emissions.land\_management\_emissions.\* and .land\_removals.biogenic\_removals / .land\_emissions.biogenic\_emissions (Tier 3, nested) | **Restructured.** Same underlying quantities, now nested under the Tier 3 land\_emissions/land\_removals tree, with removals/emissions separated and a full CO2/CH4/N2O gas breakdown instead of a flat total |
| total\_emissions, total\_emissions\_per\_bushel, ghg\_emissions\_factor, soc\_emissions\_factor, net\_emissions\_factor (tonnes CO2e / tonnes CO2e per bushel) | \*\_co2e\_kg\_co2e / \*\_ef\_kg\_co2e\_per\_kg\_yield throughout the reporting\_period/baseline emissions breakdown | **Renamed** and re-based: totals now in kg CO2e, and the per-unit "factor" basis changed from **per-bushel** to **per-kg-yield** |
| field\_level (a list of objects with a percent-share breakdown: net\_emissions\_percentage, ch4\_percentage, n2o\_percentage, indirect\_n2o\_percentage, soc\_percentage) | *(none)* | **Removed.** V2's field\_level only reports absolute values — the percent-of-crop-total share concept is gone. Recompute shares yourself from the new absolute per-field field\_level values if you relied on this |
| field\_level\_value (a list of objects with absolute per-field values) | inventory\_outcomes.field\_level (a list) | **Renamed/restructured** the same way as crop-level: name, crop\_name, total\_crop\_yield\_kg, total\_area\_ha, plus a nested reporting\_period/baseline emissions breakdown instead of flat fields |
| *(none)* | inventory\_outcomes.reporting\_percentile | New top-level field — the percentile used for uncertainty-adjusted results |

#### **New output fields: Tier 1 fossil fuel emissions**

Nested under the `fossil_fuel_emissions` key in both `crop_level` and `field_level` outputs.

- **Total**: total\_fossil\_fuel\_emissions
- **Individual emissions contributors to total**: irrigation\_infrastructure, fertilizer\_production, crop\_protection\_production, seed\_production, tillage\_machinery\_use, crop\_protection\_machinery\_use, planting\_machinery\_use, harvesting\_machinery\_use, fertilizer\_machinery\_use, crop\_protection\_transport, fertilizer\_transport, and seed\_transport

Some parts of this schema will be returned as null. This is in the case that these quantifications are on the roadmap and not yet landed. Major examples today:

- Direct/indirect N2O fields are null for fossil fuels (only the total\_n2o\_\* fields are populated), unlike the Tier 3 land-emissions breakdown above.
- Land use change are null today.

Tier 1 results are only available to users configured to receive them, otherwise all fossil\_fuel\_emissions value will be null.

#### **New output fields: Baseline**

This value was not calculated in Inventory v0, but Measure v2 adds a baseline field alongside `reporting_period` on both `crop_level` and `field_level`. It has the same shape as the reporting\_period (Tier 3 land emissions/removals and Tier 1 fossil fuel emissions), but is representing baseline emissions from historical cultivation cycles.

It is null when a baseline isn't available for the project/field.

#### **Example JSON payload**

Inventory V0:

```
{ "crop_level": { "corn": {  "crop_yield": 200.0,  "number_of_fields": 1,  "number_of_acres": 100.0,  "direct_n2o_emissions": 105.34,  "indirect_n2o_emissions": 90.06,  "soil_ch4_emissions": null,  "total_emissions": 195.4,  "total_emissions_per_bushel": 0.977,  "soc": 100.98,  "soc_per_bushel": 0.5049,  "ghg_emissions_factor": 0.93477,  "soc_emissions_factor": 0.5023449,  "net_emissions_factor": 0.4721 }}, "field_level": [ {  "field_name": "my_field",  "crediting_crop": "corn",  "net_emissions_percentage": 100.0,  "area_acres": 100.0,  "crop_yield_bushels_per_acre": 200.0 }], "field_level_value": [ {  "field_name": "my_field",  "crediting_crop": "corn",  "net_emissions_factor": 0.4721,  "area_acres": 100.0,  "crop_yield_bushels_per_acre": 200.0,  "indirect_n2o_emissions": 90.06,  "direct_n2o_emissions": 105.34,  "ch4_emissions": 0.0,  "soc": 100.98,  "ghg_emissions_factor": 0.93477,  "soc_emissions_factor": 0.5023449 }]}
```

Measure V2:

```
{ "project_type": [ "Inventory" ], "dndc_version": "12.3.0", "api_version": "V2", "total_number_of_fields": 1, "total_area_ha": 40.47, "inventory_outcomes": { "reporting_percentile": 50, "crop_level": [  {  "crop_name": "corn",  "total_crop_yield_kg": 90718,  "total_area_ha": 40.47,  "number_of_fields": 1,  "reporting_period": {  "earliest_start_date": "2020-01-01",  "latest_end_date": "2020-12-31",  "total_emissions": {  "total_co2e_kg_co2e": 216450,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.385965  },  "land_removals": {  "biogenic_removals": {  "dsoc_removals_kg_co2": -100980,  "dsoc_removals_kg_co2e": -100980,  "dsoc_ef_kg_co2_per_kg_yield": -1.11312,  "dsoc_ef_kg_co2e_per_kg_yield": -1.11312  }  },  "land_emissions": {  "total_land_emissions": {  "total_co2e_kg_co2e": 195400,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.153928  },  "biogenic_emissions": {  "dsoc_emissions_kg_co2": 0,  "dsoc_emissions_kg_co2e": 0,  "dsoc_ef_kg_co2_per_kg_yield": 0,  "dsoc_ef_kg_co2e_per_kg_yield": 0  },  "land_management_emissions": {  "total_co2e_kg_co2e": 195400,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.153928,  "co2_emissions_kg_co2": null,  "co2_emissions_kg_co2e": null,  "co2_ef_kg_co2_per_kg_yield": null,  "co2_ef_kg_co2e_per_kg_yield": null,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": 385.8608,  "direct_n2o_emissions_kg_co2e": 105340,  "direct_n2o_ef_kg_n2o_per_kg_yield": 0.00425341,  "direct_n2o_ef_kg_co2e_per_kg_yield": 1.161181,  "indirect_n2o_emissions_kg_n2o": 329.8901,  "indirect_n2o_emissions_kg_co2e": 90060,  "indirect_n2o_ef_kg_n2o_per_kg_yield": 0.00363643,  "indirect_n2o_ef_kg_co2e_per_kg_yield": 0.992747,  "total_n2o_emissions_kg_n2o": 715.7509,  "total_n2o_emissions_kg_co2e": 195400,  "total_n2o_ef_kg_n2o_per_kg_yield": 0.00788984,  "total_n2o_ef_kg_co2e_per_kg_yield": 2.153928  },  "land_use_change_emissions": null  },  "fossil_fuel_emissions": {  "total_fossil_fuel_emissions": {  "total_co2e_kg_co2e": 21050,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.232038  },  "irrigation_infrastructure": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,   "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "fertilizer_production": {  "total_co2e_kg_co2e": 12000,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.132278,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 43.956,  "total_n2o_emissions_kg_co2e": 12000,  "total_n2o_ef_kg_n2o_per_kg_yield": 0.00048453,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.132278  },  "crop_protection_production": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "seed_production": {  "total_co2e_kg_co2e": 800,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.008819,  "co2_emissions_kg_co2": 750,   "co2_emissions_kg_co2e": 750,  "co2_ef_kg_co2_per_kg_yield": 0.008267,  "co2_ef_kg_co2e_per_kg_yield": 0.008267,  "ch4_emissions_kg_ch4": 1,  "ch4_emissions_kg_co2e": 28,  "ch4_ef_kg_ch4_per_kg_yield": 1.102e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000309,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0806,  "total_n2o_emissions_kg_co2e": 22,  "total_n2o_ef_kg_n2o_per_kg_yield": 8.9e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.000243  },   "tillage_machinery_use": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "crop_protection_machinery_use": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "planting_machinery_use": {  "total_co2e_kg_co2e": 400,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.004409,  "co2_emissions_kg_co2": 370,   "co2_emissions_kg_co2e": 370,  "co2_ef_kg_co2_per_kg_yield": 0.004079,  "co2_ef_kg_co2e_per_kg_yield": 0.004079,  "ch4_emissions_kg_ch4": 1,  "ch4_emissions_kg_co2e": 28,  "ch4_ef_kg_ch4_per_kg_yield": 1.102e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000309,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,   "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0073,  "total_n2o_emissions_kg_co2e": 2,  "total_n2o_ef_kg_n2o_per_kg_yield": 8e-08,  "total_n2o_ef_kg_co2e_per_kg_yield": 2.2e-05  },   "harvesting_machinery_use": {  "total_co2e_kg_co2e": 900,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.009921,  "co2_emissions_kg_co2": 830,  "co2_emissions_kg_co2e": 830,  "co2_ef_kg_co2_per_kg_yield": 0.009149,  "co2_ef_kg_co2e_per_kg_yield": 0.009149,  "ch4_emissions_kg_ch4": 2,  "ch4_emissions_kg_co2e": 56,  "ch4_ef_kg_ch4_per_kg_yield": 2.205e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000617,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0513,  "total_n2o_emissions_kg_co2e": 14,  "total_n2o_ef_kg_n2o_per_kg_yield": 5.7e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.000154  },  "fertilizer_machinery_use": {  "total_co2e_kg_co2e": 6500,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.071651,  "co2_emissions_kg_co2": 6200,  "co2_emissions_kg_co2e": 6200,  "co2_ef_kg_co2_per_kg_yield": 0.068344, "co2_ef_kg_co2e_per_kg_yield": 0.068344,  "ch4_emissions_kg_ch4": 3,  "ch4_emissions_kg_co2e": 84,  "ch4_ef_kg_ch4_per_kg_yield": 3.307e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000926,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.7912,  "total_n2o_emissions_kg_co2e": 216,  "total_n2o_ef_kg_n2o_per_kg_yield": 8.72e-06,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.002381  },  "crop_protection_transport": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "fertilizer_transport": {  "total_co2e_kg_co2e": 300,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.003307,  "co2_emissions_kg_co2": 280,  "co2_emissions_kg_co2e": 280,  "co2_ef_kg_co2_per_kg_yield": 0.003086,  "co2_ef_kg_co2e_per_kg_yield": 0.003086,  "ch4_emissions_kg_ch4": 0.5,  "ch4_emissions_kg_co2e": 14,  "ch4_ef_kg_ch4_per_kg_yield": 5.51e-06,  "ch4_ef_kg_co2e_per_kg_yield": 0.000154,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.022,  "total_n2o_emissions_kg_co2e": 6,  "total_n2o_ef_kg_n2o_per_kg_yield": 2.4e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 6.6e-05  },  "seed_transport": {  "total_co2e_kg_co2e": 150,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.001653,  "co2_emissions_kg_co2": 140,  "co2_emissions_kg_co2e": 140,  "co2_ef_kg_co2_per_kg_yield": 0.001543,  "co2_ef_kg_co2e_per_kg_yield": 0.001543,  "ch4_emissions_kg_ch4": 0.25,  "ch4_emissions_kg_co2e": 7,  "ch4_ef_kg_ch4_per_kg_yield": 2.76e-06,  "ch4_ef_kg_co2e_per_kg_yield": 7.7e-05,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.011,  "total_n2o_emissions_kg_co2e": 3,  "total_n2o_ef_kg_n2o_per_kg_yield": 1.2e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 3.3e-05  }  }  },  "baseline": null  } ], "field_level": [  {  "name": "my_field",  "crop_name": "corn",  "total_crop_yield_kg": 90718,  "total_area_ha": 40.47,  "reporting_period": {  "start_date": "2020-01-01",  "end_date": "2020-12-31",  "total_emissions": {  "total_co2e_kg_co2e": 216450,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.385965  },  "land_removals": {  "biogenic_removals": {  "dsoc_removals_kg_co2": -100980,  "dsoc_removals_kg_co2e": -100980,  "dsoc_ef_kg_co2_per_kg_yield": -1.11312,  "dsoc_ef_kg_co2e_per_kg_yield": -1.11312  }  },  "land_emissions": {  "total_land_emissions": {  "total_co2e_kg_co2e": 195400,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.153928  },  "biogenic_emissions": {  "dsoc_emissions_kg_co2": 0,  "dsoc_emissions_kg_co2e": 0,  "dsoc_ef_kg_co2_per_kg_yield": 0,  "dsoc_ef_kg_co2e_per_kg_yield": 0  },  "land_management_emissions": {  "total_co2e_kg_co2e": 195400,  "total_co2e_ef_kg_co2e_per_kg_yield": 2.153928,  "co2_emissions_kg_co2": null,  "co2_emissions_kg_co2e": null,  "co2_ef_kg_co2_per_kg_yield": null,  "co2_ef_kg_co2e_per_kg_yield": null,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": 385.8608,  "direct_n2o_emissions_kg_co2e": 105340,  "direct_n2o_ef_kg_n2o_per_kg_yield": 0.00425341,  "direct_n2o_ef_kg_co2e_per_kg_yield": 1.161181,  "indirect_n2o_emissions_kg_n2o": 329.8901,  "indirect_n2o_emissions_kg_co2e": 90060,  "indirect_n2o_ef_kg_n2o_per_kg_yield": 0.00363643,  "indirect_n2o_ef_kg_co2e_per_kg_yield": 0.992747,  "total_n2o_emissions_kg_n2o": 715.7509,  "total_n2o_emissions_kg_co2e": 195400,  "total_n2o_ef_kg_n2o_per_kg_yield": 0.00788984,  "total_n2o_ef_kg_co2e_per_kg_yield": 2.153928  },  "land_use_change_emissions": null  },  "fossil_fuel_emissions": {  "total_fossil_fuel_emissions": {  "total_co2e_kg_co2e": 21050,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.232038  },  "irrigation_infrastructure": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,   "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "fertilizer_production": {  "total_co2e_kg_co2e": 12000,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.132278,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 43.956,  "total_n2o_emissions_kg_co2e": 12000,  "total_n2o_ef_kg_n2o_per_kg_yield": 0.00048453,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.132278  },  "crop_protection_production": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "seed_production": {  "total_co2e_kg_co2e": 800,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.008819,  "co2_emissions_kg_co2": 750,   "co2_emissions_kg_co2e": 750,  "co2_ef_kg_co2_per_kg_yield": 0.008267,  "co2_ef_kg_co2e_per_kg_yield": 0.008267,  "ch4_emissions_kg_ch4": 1,  "ch4_emissions_kg_co2e": 28,  "ch4_ef_kg_ch4_per_kg_yield": 1.102e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000309,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0806,  "total_n2o_emissions_kg_co2e": 22,  "total_n2o_ef_kg_n2o_per_kg_yield": 8.9e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.000243  },   "tillage_machinery_use": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "crop_protection_machinery_use": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "planting_machinery_use": {  "total_co2e_kg_co2e": 400,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.004409,  "co2_emissions_kg_co2": 370,   "co2_emissions_kg_co2e": 370,  "co2_ef_kg_co2_per_kg_yield": 0.004079,  "co2_ef_kg_co2e_per_kg_yield": 0.004079,  "ch4_emissions_kg_ch4": 1,  "ch4_emissions_kg_co2e": 28,  "ch4_ef_kg_ch4_per_kg_yield": 1.102e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000309,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,   "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0073,  "total_n2o_emissions_kg_co2e": 2,  "total_n2o_ef_kg_n2o_per_kg_yield": 8e-08,  "total_n2o_ef_kg_co2e_per_kg_yield": 2.2e-05  },   "harvesting_machinery_use": {  "total_co2e_kg_co2e": 900,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.009921,  "co2_emissions_kg_co2": 830,  "co2_emissions_kg_co2e": 830,  "co2_ef_kg_co2_per_kg_yield": 0.009149,  "co2_ef_kg_co2e_per_kg_yield": 0.009149,  "ch4_emissions_kg_ch4": 2,  "ch4_emissions_kg_co2e": 56,  "ch4_ef_kg_ch4_per_kg_yield": 2.205e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000617,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.0513,  "total_n2o_emissions_kg_co2e": 14,  "total_n2o_ef_kg_n2o_per_kg_yield": 5.7e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.000154  },  "fertilizer_machinery_use": {  "total_co2e_kg_co2e": 6500,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.071651,  "co2_emissions_kg_co2": 6200,  "co2_emissions_kg_co2e": 6200,  "co2_ef_kg_co2_per_kg_yield": 0.068344, "co2_ef_kg_co2e_per_kg_yield": 0.068344,  "ch4_emissions_kg_ch4": 3,  "ch4_emissions_kg_co2e": 84,  "ch4_ef_kg_ch4_per_kg_yield": 3.307e-05,  "ch4_ef_kg_co2e_per_kg_yield": 0.000926,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.7912,  "total_n2o_emissions_kg_co2e": 216,  "total_n2o_ef_kg_n2o_per_kg_yield": 8.72e-06,  "total_n2o_ef_kg_co2e_per_kg_yield": 0.002381  },  "crop_protection_transport": {  "total_co2e_kg_co2e": 0,  "total_co2e_ef_kg_co2e_per_kg_yield": 0,  "co2_emissions_kg_co2": 0,  "co2_emissions_kg_co2e": 0,  "co2_ef_kg_co2_per_kg_yield": 0,  "co2_ef_kg_co2e_per_kg_yield": 0,  "ch4_emissions_kg_ch4": 0,  "ch4_emissions_kg_co2e": 0,  "ch4_ef_kg_ch4_per_kg_yield": 0,  "ch4_ef_kg_co2e_per_kg_yield": 0,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0,  "total_n2o_emissions_kg_co2e": 0,  "total_n2o_ef_kg_n2o_per_kg_yield": 0,  "total_n2o_ef_kg_co2e_per_kg_yield": 0  },  "fertilizer_transport": {  "total_co2e_kg_co2e": 300,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.003307,  "co2_emissions_kg_co2": 280,  "co2_emissions_kg_co2e": 280,  "co2_ef_kg_co2_per_kg_yield": 0.003086,  "co2_ef_kg_co2e_per_kg_yield": 0.003086,  "ch4_emissions_kg_ch4": 0.5,  "ch4_emissions_kg_co2e": 14,  "ch4_ef_kg_ch4_per_kg_yield": 5.51e-06,  "ch4_ef_kg_co2e_per_kg_yield": 0.000154,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.022,  "total_n2o_emissions_kg_co2e": 6,  "total_n2o_ef_kg_n2o_per_kg_yield": 2.4e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 6.6e-05  },  "seed_transport": {  "total_co2e_kg_co2e": 150,  "total_co2e_ef_kg_co2e_per_kg_yield": 0.001653,  "co2_emissions_kg_co2": 140,  "co2_emissions_kg_co2e": 140,  "co2_ef_kg_co2_per_kg_yield": 0.001543,  "co2_ef_kg_co2e_per_kg_yield": 0.001543,  "ch4_emissions_kg_ch4": 0.25,  "ch4_emissions_kg_co2e": 7,  "ch4_ef_kg_ch4_per_kg_yield": 2.76e-06,  "ch4_ef_kg_co2e_per_kg_yield": 7.7e-05,  "direct_n2o_emissions_kg_n2o": null,  "direct_n2o_emissions_kg_co2e": null,  "direct_n2o_ef_kg_n2o_per_kg_yield": null,  "direct_n2o_ef_kg_co2e_per_kg_yield": null,  "indirect_n2o_emissions_kg_n2o": null,  "indirect_n2o_emissions_kg_co2e": null,  "indirect_n2o_ef_kg_n2o_per_kg_yield": null,  "indirect_n2o_ef_kg_co2e_per_kg_yield": null,  "total_n2o_emissions_kg_n2o": 0.011,  "total_n2o_emissions_kg_co2e": 3,  "total_n2o_ef_kg_n2o_per_kg_yield": 1.2e-07,  "total_n2o_ef_kg_co2e_per_kg_yield": 3.3e-05  }  }  },  "baseline": null  } ]}, "intervention_outcomes": null}
```

### **Intervention V0 Migration**

#### **Project Configuration**

Endpoint:

`v0/intervention/projects` -\>

`/v2/measure/projects`

Intervention V0 project creation takes its input as query parameters (plus an x-consumer-id header). Measure V2 moves this to a single JSON request body: project\_name and is\_test map over unchanged, and everything intervention-specific now lives nested under a new **intervention\_configuration** object, which is required whenever outcomes include "Intervention".

| **Intervention V0 (query parameter)** | **Measure V2 (JSON body field)** | **Notes** |
| --- | --- | --- |
| project\_name | project\_name | **Unchanged** |
| is\_test | is\_test | **Unchanged**, defaults to false |
| *(none)* | outcomes | **New**, required. Must include "Intervention" |
| protocol | intervention\_configuration.protocol | **Unchanged**, now nested |
| baseline\_method | intervention\_configuration.baseline\_method | **Nested**; **now required for every protocol** (V0 only required it for sep); see removed values below |
| reporting\_percentile | intervention\_configuration.reporting\_percentile | **Nested**; still only settable when protocol is general\_scope\_3 |
| optional\_scope\_1\_ghg\_boundaries | *(none)* | **Removed** — see below |
| optional\_scope\_3\_ghg\_boundaries | *(none)* | **Removed** — see below |

#### **Removed**

- optional\_scope\_1\_ghg\_boundaries query parameter — no equivalent field in Measure V2. (V0 already rejects this if supplied, so this is not a functional change.)
- optional\_scope\_3\_ghg\_boundaries query parameter — no equivalent field in Measure V2. (V0 already rejects this if supplied, so this is not a functional change.)

#### **Baseline method allowed values per protocol**

| **Protocol** | **Intervention V0 allowed baseline\_method values** | **Measure V2 allowed baseline\_method values** |
| --- | --- | --- |
| general\_scope\_3 | blended, rotational, matched, climate\_matched\_rice, climate\_matched | blended, rotational, matched |
| vm0042 | rotational, climate\_matched\_rice, blended | rotational, blended, climate\_matched\_rice |
| sep | blended, matched | blended, matched |

#### **Examples**

Intervention V0:

```
curl -X POST "https://api.regrow.ag/dndc-scenarios-service/v0/api/projects?project_name=my_project&protocol=general_scope_3&baseline_method=matched&reporting_percentile=40&is_test=true" \-H "x-consumer-id: <your_consumer_id>"
```

Measure V2:

```
curl -X POST "https://api.regrow.ag/dndc-scenarios-service/v2/measure/projects" \-H "Content-Type: application/json" \-H "x-consumer-id: <your_consumer_id>" \-d '{ "project_name": "my_project", "outcomes": ["Intervention"], "is_test": true, "intervention_configuration": {  "protocol": "general_scope_3",  "baseline_method": "matched",  "reporting_percentile": 40 }}'
```

### **Field Input**

Endpoint:

`/v0/api/projects/{project_name}/fields` →

`/v2/measure/projects/{project_name}/fields`

There is a large structural change between the Intervention V0 and Measure V2 field input JSON schema. Intervention V0 requires submitting a **session** of exactly two scenarios in one request — either baseline + practice\_change, or historical\_baseline + intervention — each with its own rotations and phases (a phases entry is equivalent to one cultivation cycle in Measure V2). Measure V2 instead has a cultivation\_cycle list; there is no scenarios list and no scenario\_type tag. Essentially, the two scenarios in Intervention V0 are merged into one list in Measure V2. The role of each scenario in Intervention V0 is now implicit in each cultivation cycle's date relative to enrollment\_date rather than an explicit scenario\_type tag.

Cultivation cycles that fall beforeenrollment\_date are the Measure V2 analog of Intervention V0's historical\_baseline/baseline scenario — they are the historical data fed into the intervention baseline thread-generation logic driven by the project's intervention\_configuration.baseline\_method) that Intervention V0's separate historical\_baseline scenario fed.

Cultivation cycles on or after enrollment\_date play the role Intervention V0's intervention/practice\_change scenario played.

| **Intervention V0** | **Measure V2** | **Notes** |
| --- | --- | --- |
| session\_name | name | **Renamed**; V2's name identifies a single field, not a paired session |
| scenarios (exactly 2, each with name/location/soil/rotations\[0\].phases\[\]) | *(none)* | **Removed** — both scenarios' history is merged into a single cultivation\_cycles list |
| Scenario rotations\[0\].phases\[\] | cultivation\_cycles | **Restructured.** Same "phases = cultivation cycle" concept, now one combined list instead of split across two scenarios |
| scenario\_type (baseline/practice\_change/historical\_baseline/intervention) | *(none — implicit via* enrollment\_date) | **Restructured.** The baseline role is played by cultivation cycles before enrollment\_date; the intervention role by cycles at or after it |
| intervention\_start\_date (optional; only valid for the baseline+practice\_change pairing) | enrollment\_date (required) | **Restructured.** Analogous — marks where the reporting/intervention period begins — but always required in Measure V2, since the pairing distinction no longer exists |
| Scenario location / soil | location / soil | **Restructured.** Narrowed the same way as documented in the Inventory V0 Field Input section above |
| reporting\_information.crop\_name / .crop\_yield | reporting\_information.crop\_name / .crop\_yield\_in\_kg\_per\_ha | **Renamed** with explicit units in kilogram per hectare, other unit types are not supported. Not required for Scope 1 projects, but required for Scope 3 projects. |

#### **Minimum historical length**

The minimum historical length required by Measure V2 works differently than V0 Intervention. Intervention V0 has no fixed "3 year" rule like Inventory V0 — it uses a phase-length-parity check between the two scenarios and a protocol-configured minimum phase count instead.

For Measure V2 projects configured with Intervention outcomes, the protocol-configured minimum historical cultivation cycle requirement still exists. The 3 years of cultivation-cycle history before the enrollment\_date is also required.

When migrating an Intervention V0 project to Measure V2, re-check your historical cultivation cycles against that fixed rule rather than your old protocol-specific phase-count requirement.

#### **Event types supported**

irrigation, till, flood, cropping, fertilizer, organic\_amendment, and fire events are supported and unchanged.

#### **Deprecated event types no longer supported**

- application — Please use fertilizer and/or organic\_amendment instead.
- graze
- tile\_drainage

#### **Example JSON payloads**

Intervention V0 (two scenarios: historical\_baseline covering 2016–2019, intervention covering 2020):

```
{  "session_name": "my_field",  "scenarios": [    {      "name": "my_field_historical",      "scenario_type": "historical_baseline",      "location": {        "boundary": {          "type": "Polygon",          "coordinates": [[[-90.1, 41.5], [-90.1, 41.6], [-90.0, 41.6], [-90.0, 41.5], [-90.1, 41.5]]]        }      },      "rotations": [        {          "phases": [            {              "start_date": "2016-01-01",              "end_date": "2016-12-31",              "management_events": {                "cropping": [{"start_date": "2016-05-01", "end_date": "2016-10-15", "name": "corn"}]              }            },            {              "start_date": "2017-01-01",              "end_date": "2017-12-31",              "management_events": {                "cropping": [{"start_date": "2017-05-01", "end_date": "2017-10-15", "name": "corn"}]              }            },            {              "start_date": "2018-01-01",              "end_date": "2018-12-31",              "management_events": {                "cropping": [{"start_date": "2018-05-01", "end_date": "2018-10-15", "name": "corn"}]              }            },            {              "start_date": "2019-01-01",              "end_date": "2019-12-31",              "management_events": {                "cropping": [{"start_date": "2019-05-01", "end_date": "2019-10-15", "name": "corn"}]              }            }          ]        }      ]    },    {      "name": "my_field_intervention",      "scenario_type": "intervention",      "location": {        "boundary": {          "type": "Polygon",          "coordinates": [[[-90.1, 41.5], [-90.1, 41.6], [-90.0, 41.6], [-90.0, 41.5], [-90.1, 41.5]]]        }      },      "rotations": [        {          "phases": [            {              "start_date": "2020-01-01",              "end_date": "2020-12-31",              "management_events": {                "cropping": [{"start_date": "2020-05-01", "end_date": "2020-10-15", "name": "corn"}],                "fertilizer": [{"date": "2020-05-01", "name": "urea", "amount": 150, "depth": 5}]              }            }          ]        }      ]    }  ],  "reporting_information": {    "start_date": "2020-01-01",    "end_date": "2020-12-31",    "crop_name": "corn",    "crop_yield": 180  }}
```

Measure V2 (one field; the 2016–2019 cycles are the historical/baseline analog, 2020 is the intervention/reporting year):

```
{  "name": "my_field",  "location": {    "boundary": {      "type": "Polygon",      "coordinates": [[[-90.1, 41.5], [-90.1, 41.6], [-90.0, 41.6], [-90.0, 41.5], [-90.1, 41.5]]]    }  },  "enrollment_date": "2020-01-01",  "cultivation_cycles": [    {      "start_date": "2016-01-01",      "end_date": "2016-12-31",      "management_events": {        "cropping": [{"start_date": "2016-05-01", "end_date": "2016-10-15", "name": "corn"}]      }    },    {      "start_date": "2017-01-01",      "end_date": "2017-12-31",      "management_events": {        "cropping": [{"start_date": "2017-05-01", "end_date": "2017-10-15", "name": "corn"}]      }    },    {      "start_date": "2018-01-01",      "end_date": "2018-12-31",      "management_events": {        "cropping": [{"start_date": "2018-05-01", "end_date": "2018-10-15", "name": "corn"}]      }    },    {      "start_date": "2019-01-01",      "end_date": "2019-12-31",      "management_events": {        "cropping": [{"start_date": "2019-05-01", "end_date": "2019-10-15", "name": "corn"}]      }    },    {      "start_date": "2020-01-01",      "end_date": "2020-12-31",      "management_events": {        "cropping": [{"start_date": "2020-05-01", "end_date": "2020-10-15", "name": "corn"}],        "fertilizer": [{"date": "2020-05-01", "name": "urea", "amount": 150, "depth": 5}]      }    }  ],  "reporting_information": {    "start_date": "2020-01-01",    "end_date": "2020-12-31",    "crop_name": "corn",    "crop_yield_in_kg_per_ha": 11296  }}
```

#### **Project Response**

This section details the differences between the V0 Intervention project response and the Measure V2 project response.

Endpoint: V0's separate `GET .../scope_1` and `GET .../scope_3` endpoints unify into one single endpoint `GET /v2/measure/projects/{project_name}`. The `credit_share_type` query parameter carries over to the unified endpoint, narrowed to just `deduction` (default) and `weighted_full`. `weighted` and `enrollment` are no longer supported.

The top-level response shape has changed, Measure V2 returns project metadata directly at the top level (`project_type`, `dndc_version`, `api_version`, `total_number_of_fields`, `total_area_ha`) alongside `intervention_outcomes` — all Intervention outcome data lives under this key (which can be `null` if the project is not configured for Intervention outcomes).

#### **Key concepts**

- Removals and Emissions are now separated. 
    - `biogenic_removals` and `biogenic_emissions` DSOC values are relative to the atmosphere (emissions are positive values, removals are negative values).
- Intervention V0 used AR5 conversion factors for CO2e results. For Measure V2 this has been updated to using AR6 conversion factors.
- Null values represent quantification that could not be made, not 0 emission/removal values.

#### **New output fields: Project-level per-gas breakdown and per-hectare metrics**

Per-gas breakdowns are not returned at the project/crop level in Intervention V0 — it only existed at the field level. Measure V2 adds a full `land_management_emissions` breakdown (CH4, direct N2O, indirect N2O, each in kg CO2e, per-kg-yield, and per-hectare) at the project level too.

`*_per_ha` variants of output fields are new at both the project and field level as well.

#### **Project-level JSON field mapping (**`project_level`**)**

Intervention V0's `project_level` (a single object, Scope 1 only) and `crop_level` (a dict, Scope 3 only) are now unified into one `project_level: list` in the Measure V2 response. Scope 1 yields a single item with `crop_name: null`; Scope 3 yields one item per crop.

| Measure V2 field | Intervention V0 source | Notes |
| --- | --- | --- |
| `crop_name` | Scope 3: `crop_level` dict key / `reporting_information.crop_name`. Scope 1: *(none)* | Scope 1 → `null`, no crop concept |
| `earliest_reporting_start_date` / `latest_reporting_end_date` | `reporting_information.start_date`/`.end_date` (nested sub-object in both scopes) | Flattened directly onto the item, no longer nested under a `reporting_information` header |
| `total_crop_yield_kg` | Scope 3: `reporting_information.total_yield` (bushels). Scope 1: *(none)* | Renamed + unit change bushels → kg; `null` for Scope 1 |
| `total_area_ha` | `credit.number_of_acres` | Renamed + unit change acres → ha |
| `number_of_fields` | `credit.number_of_fields` | Renamed to match Inventory |
| `total_credit_kg_co2e` | Scope 3: new (no combined absolute grand total existed). Scope 1: `credit.total_credit` | Renamed with explicit kg CO2e units for Scope 1 |
| `total_credit_kg_co2e_per_kg_yield` | Scope 3: `credit.total_credit` (per-bushel ratio). Scope 1: *(none)* | Renamed + rebased per-bushel → per-kg-yield; `null` for Scope 1 |
| `total_credit_kg_co2e_per_ha` | *(none)* | New for both scopes |
| `dsoc.dsoc_kg_co2e` | Scope 3: `credit.reversible_credits.total_reversible_emissions_reductions`. Scope 1: `credit.reversible_credits.credit` | Renamed/restructured |
| `dsoc.dsoc_ef_kg_co2_per_kg_yield` | *(none)* | New. `null` for Scope 1 |
| `dsoc.dsoc_ef_kg_co2e_per_kg_yield` | Scope 3: `credit.total_reversible_credit`. Scope 1: *(none)* | Renamed + rebased per-bushel → per-kg-yield; `null` for Scope 1 |
| `dsoc.dsoc_kg_co2e_per_ha` | *(none)* | New |
| `land_management_emissions.total_co2e_ef_kg_co2e_per_kg_yield` | Scope 3: `credit.total_non_reversible_credit`. Scope 1: *(none)* | Renamed + rebased; `null` for Scope 1 |
| `land_management_emissions.total_kg_co2e_per_ha` | *(none)* | New |
| `land_management_emissions.total_*` | Scope 3: `credit.non_reversible_credits.total_non_reversible_emissions_reductions`. Scope 1: `credit.non_reversible_credits.credit` | Renamed/restructured |
| `land_management_emissions.{ch4,direct_n2o,indirect_n2o}_*` | (None) | New project-level per-gas breakdown — Intervention V0 only exposed this at the field level, never at project/crop level |

#### **Field-level JSON field mapping** (`field_level`)

Intervention V0's `field_level` was an object keyed by field id. Measure V2's `field_level` is a plain list with `name` as a field instead of a dict key.

##### Terminology renames

Intervention V0's `baseline` / `practice_change` / `preliminary_credit` (or, inconsistently, plain `credit` for indirect N2O and Scope 1 soil CH4) become Measure V2's `counterfactual_baseline` / `intervention` / `delta`, applied uniformly across dSOC, CH4, direct N2O, and indirect N2O.

| Measure V2 field | Intervention V0 source | Notes |
| --- | --- | --- |
| `name` | `field_name` | Renamed |
| `enrollment_date` | *(not echoed in Intervention V0)* | New in the response |
| `reporting_start_date` / `reporting_end_date` | `reporting_information.start_date`/`.end_date` | Flattened, no longer nested |
| `crop_name` | `reporting_information.crop_name` | Unchanged, flattened |
| `total_crop_yield_kg` | `reporting_information.crop_yield` (bushels/acre; required Scope 3, unused/optional Scope 1) | Renamed + unit change; may be `null` for Scope 1 |
| `total_area_ha` | Scope 1: `reporting_information.acres`. Scope 3: *(none — Intervention V0 Scope 3 field-level had no area field at all)* | Renamed for Scope 1; net-new for Scope 3 |
| `total_credit_share_kg_co2e` | `outcomes.credit_share` | Renamed, units clarified as kg CO2e |
| `dsoc_credit_share_kg_co2e` / `land_management_emissions_credit_share_kg_co2e` | *(none — split from the single* `credit_share` above) | New split |
| `dsoc_pre_uncertainty.dsoc_intervention_kg_co2e` | `outcomes.reversible_outcomes.dsoc.practice_change` | Renamed (`practice_change` → `intervention`) |
| `dsoc_pre_uncertainty.dsoc_counterfactual_baseline_kg_co2e` | `outcomes.reversible_outcomes.dsoc.baseline` | Renamed (`baseline` → `counterfactual_baseline`) |
| `dsoc_pre_uncertainty.dsoc_delta_kg_co2e` | `outcomes.reversible_outcomes.dsoc.preliminary_credit` | Renamed (`preliminary_credit` → `delta`) |
| `land_management_emissions_pre_uncertainty.ch4_{intervention,counterfactual_baseline,delta}_kg_co2e` | `outcomes.non_reversible_outcomes.soil_ch4.{practice_change,baseline,credit}` | Renamed; note Intervention V0 used plain `credit`, not `preliminary_credit`, here — Measure V2 uniformly uses `delta` |
| `land_management_emissions_pre_uncertainty.direct_n2o_{intervention,counterfactual_baseline,delta}_kg_co2e` | `outcomes.non_reversible_outcomes.direct_n2o.{practice_change,baseline,preliminary_credit}` | Renamed |
| `land_management_emissions_pre_uncertainty.indirect_n2o_{intervention,counterfactual_baseline,delta}_kg_co2e` | `outcomes.non_reversible_outcomes.indirect_n2o.{practice_change,baseline,credit}` | Renamed; Intervention V0 used plain `credit` here too - Measure V2 uses `delta` |

#### **Removed**

- Raw uncertainty output: Intervention V0 echoed back `uncertainty_distribution`, `mean`, and `standard_deviation` per-gas and per-scope throughout both project- and field-level responses. None of this is returned in Measure V2 — only final derived values remain. 
    - Uncertainty data can be retrieved from a separate endpoint: `/v2/measure/projects/{project_name}/uncertainty_distribution`
    - The `include_uncertainty_distribution` query parameter has therefore also been removed
- Deprecated Intervention V0 fields: `fossil_fuel_co2` (both scopes), and Scope-1-only `enteric_ch4`/`liming_emissions`.

#### **Example JSON payloads**

Intervention V0 (`GET .../scope_3`, one crop/one field):

```
{  "crop_level": {    "corn": {      "reporting_information": {        "start_date": "2020-01-01",        "end_date": "2020-12-31",        "crop_name": "corn",        "total_yield": 200.0      },      "credit": {        "number_of_fields": 1,        "number_of_acres": 100.0,        "reversible_credits": { "total_reversible_emissions_reductions": 55.0 },        "non_reversible_credits": { "total_non_reversible_emissions_reductions": 30.0 },        "total_reversible_credit": 0.275,        "total_non_reversible_credit": 0.15,        "total_credit": 0.425      }    }  },  "field_level": {    "1001": {      "field_name": "my_field",      "reporting_information": {        "start_date": "2020-01-01",        "end_date": "2020-12-31",        "crop_name": "corn",        "crop_yield": 200.0      },      "outcomes": {        "credit_share": 55.0,        "reversible_outcomes": {          "credit_share": 55.0,          "dsoc": { "baseline": 40.0, "practice_change": 55.0, "preliminary_credit": 15.0 }        },        "non_reversible_outcomes": {          "credit_share": 30.0,          "direct_n2o": { "baseline": 20.0, "practice_change": 12.0, "preliminary_credit": 8.0 },          "indirect_n2o": { "baseline": 10.0, "practice_change": 8.0, "credit": 2.0 },          "soil_ch4": { "baseline": 5.0, "practice_change": 5.0, "credit": 0.0 }        }      }    }  }}
```

Measure v2: 

```
{  "scope": "scope_3",  "protocol": "general_scope_3",  "reporting_percentile": 50,  "baseline_method": "matched",  "credit_share_type": "deduction",  "project_level": [    {      "crop_name": "corn",      "earliest_reporting_start_date": "2020-01-01",      "latest_reporting_end_date": "2020-12-31",      "total_crop_yield_kg": 90718,      "total_area_ha": 40.47,      "number_of_fields": 1,      "total_credit_kg_co2e": -25000,      "total_credit_kg_co2e_per_kg_yield": -0.27558,      "total_credit_kg_co2e_per_ha": -617.74153,      "dsoc": {        "dsoc_kg_co2": -55000,        "dsoc_kg_co2e": -55000,        "dsoc_ef_kg_co2_per_kg_yield": -0.606,        "dsoc_ef_kg_co2e_per_kg_yield": -0.606,        "dsoc_kg_co2e_per_ha": -1359.5      },      "land_management_emissions": {        "total_co2e_kg_co2e": 30000,        "total_co2e_ef_kg_co2e_per_kg_yield": 0.3307,        "total_kg_co2e_per_ha": 741.3,        "ch4_emissions_kg_co2e": 0,        "ch4_emissions_kg_co2e_per_kg_yield": 0,        "ch4_emissions_kg_co2e_per_ha": 0,        "direct_n2o_emissions_kg_co2e": 20000,        "direct_n2o_emissions_kg_co2e_per_kg_yield": 0.2205,        "direct_n2o_emissions_kg_co2e_per_ha": 494.2,        "indirect_n2o_emissions_kg_co2e": 10000,        "indirect_n2o_emissions_kg_co2e_per_kg_yield": 0.1102,        "indirect_n2o_emissions_kg_co2e_per_ha": 247.1      }    }  ],  "field_level": [    {      "name": "my_field",      "enrollment_date": "2020-01-01",      "reporting_start_date": "2020-01-01",      "reporting_end_date": "2020-12-31",      "crop_name": "corn",      "total_crop_yield_kg": 90718,      "total_area_ha": 40.47,      "total_credit_share_kg_co2e": -25000,      "dsoc_credit_share_kg_co2e": -55000,      "land_management_emissions_credit_share_kg_co2e": 30000,      "dsoc_pre_uncertainty": {        "dsoc_intervention_kg_co2e": 60000,        "dsoc_counterfactual_baseline_kg_co2e": 40000,        "dsoc_delta_kg_co2e": 20000      },      "land_management_emissions_pre_uncertainty": {        "ch4_intervention_kg_co2e": 5000,        "ch4_counterfactual_baseline_kg_co2e": 5000,        "ch4_delta_kg_co2e": 0,        "direct_n2o_intervention_kg_co2e": 12000,        "direct_n2o_counterfactual_baseline_kg_co2e": 20000,        "direct_n2o_delta_kg_co2e": -8000,        "indirect_n2o_intervention_kg_co2e": 8000,        "indirect_n2o_counterfactual_baseline_kg_co2e": 10000,        "indirect_n2o_delta_kg_co2e": -2000        }      }    }  ]}
```

### **Field Input Requirements**

This section details the field input requirements for Measure V2. The `/v2/measure/projects/{project_name}/fields` endpoint will return a HTTP 4XX error code and error description for any input that does not meet all of these requirements.

#### **Common Requirements**

Requirements that apply to all projects regardless of the outcome type.

- **Field name uniqueness** — a field's `name` must be unique within the project; submitting a duplicate returns `409 Conflict`.
- **Multi-polygon centroid proximity** — for multi-polygon locations, every pair of the constituent polygons' centroids must be within 5000 km of each other.
- **Exactly one cultivation cycle in the reporting period** — `reporting_information`'s date range must overlap exactly one of the submitted `cultivation_cycles` — not zero, not more than one.
- **Reporting period within cultivation-cycle bounds** — `reporting_information.start_date` and `.end_date` must both fall within the full span of the submitted cultivation cycles, from the earliest cycle's start date to the latest cycle's end date.
- **A matching cropping event within the reporting period** — at least one `cropping` event named `reporting_information.crop_name` must exist and be fully contained within the reporting period.
- **No management event may partially overlap the reporting period boundary** — every management event, of any type, must fall either fully inside or fully outside the reporting period; straddling the boundary is rejected.
- **Minimum 3 years of historical cultivation-cycle data before** `enrollment_date` — At least 3 years of cultivation-cycle history must exist before the `enrollment_date`.
- **Fertilizer additive rules** — additive requirements and pairings for each fertilizer event are validated against our internal data (for example, an EENF fertilizer must have additives, an EENF-type additive is only valid on a custom fertilizer, and urease/nitrification inhibitor additives must be paired correctly).
- **Fertilizer/organic-amendment rate unit must resolve to a known density** — a volume-based `rate_unit` requires a known liquid density for that fertilizer or organic-amendment name, unless the event is `custom` and supplies its own density.
- **Fertilizer nutrient-amount and inhibitor bounds** — nitrate, urea, ammonia, ammonium, ammonium\_bicarbonate, sulfate, and phosphate amounts must fall within `[0, 600]`; inhibitor durations must fall within `[0, 180]` days; inhibitor efficiencies must fall within `[0, 1]`. Organic amendments are not subject to this check, only the density check above.
- **Cropping event** `plant_density` requires DNDC 12.3.0 or later — if any submitted `cropping` event sets `plant_density`, the request is rejected if the DNDC version being used is not `12.3.0` or greater.

#### **Inventory Requirements**

Requirements that apply to projects configured with Inventory outcomes.

- **Yield is required -** `reporting_information.crop_yield_in_kg_per_ha` is required for any project with Inventory outcomes in the reporting period only.

#### **Intervention Requirements**

Requirements that apply to projects configured with Intervention outcomes.

- **Minimum pre-enrollment cultivation cycles** — the number of submitted cultivation cycles ending before `enrollment_date` must meet a protocol-specific minimum: 3 for `sep`, `vm0042`, and `general_scope_3`.
- **Scope 3 yield is required –** `reporting_information.crop_yield_in_kg_per_ha` is required for any project with Intervention outcomes and a scope 3 protocol (`general_scope_3`), it is optional for a scope 1 protocol.

` `

- [Sustainability Insights](https://help.regrow.ag/sustainability-insights?hsLang=en#main-content)

    - [General](https://help.regrow.ag/sustainability-insights?hsLang=en#general)
    - [Configure](https://help.regrow.ag/sustainability-insights?hsLang=en#configure)
    - [Report](https://help.regrow.ag/sustainability-insights?hsLang=en#report)
    - [Plan](https://help.regrow.ag/sustainability-insights?hsLang=en#plan)
    - [Data updates](https://help.regrow.ag/sustainability-insights?hsLang=en#data-updates)
    - [Models](https://help.regrow.ag/sustainability-insights?hsLang=en#models)
    - [Integrations](https://help.regrow.ag/sustainability-insights?hsLang=en#integrations)
    - [SAI Outcomes](https://help.regrow.ag/sustainability-insights?hsLang=en#sai-outcomes)
- [MRV](https://help.regrow.ag/mrv?hsLang=en#main-content)

    - [Login and registration](https://help.regrow.ag/mrv?hsLang=en#login-and-registration)
    - [Field boundaries](https://help.regrow.ag/mrv?hsLang=en#field-boundaries)
    - [Data entry tips and guidelines](https://help.regrow.ag/mrv?hsLang=en#data-entry-tips-and-guidelines)
    - [Data entry accelerators](https://help.regrow.ag/mrv?hsLang=en#data-entry-accelerators)
    - [Soil sampling](https://help.regrow.ag/mrv?hsLang=en#soil-sampling)
    - [Program data review](https://help.regrow.ag/mrv?hsLang=en#program-data-review)
    - [Reporting](https://help.regrow.ag/mrv?hsLang=en#reporting)
- [Research and data credits](https://help.regrow.ag/research-and-data-credits?hsLang=en)
- [Measure API: Enteric](https://help.regrow.ag/measure-api-enteric?hsLang=en#main-content)

    - [Getting started](https://help.regrow.ag/measure-api-enteric?hsLang=en#getting-started)
- [Measure API v2](https://help.regrow.ag/measure-api-v2?hsLang=en)
- [Measure API: Intervention](https://help.regrow.ag/measure-api-intervention?hsLang=en#main-content)

    - [Introduction](https://help.regrow.ag/measure-api-intervention?hsLang=en#introduction)
    - [Getting started](https://help.regrow.ag/measure-api-intervention?hsLang=en#getting-started)
    - [Common Questions](https://help.regrow.ag/measure-api-intervention?hsLang=en#common-questions)
    - [Outcomes](https://help.regrow.ag/measure-api-intervention?hsLang=en#outcomes)
    - [Product Releases](https://help.regrow.ag/measure-api-intervention?hsLang=en#product-releases)
- [Measure API: Inventory](https://help.regrow.ag/measure-api-inventory?hsLang=en#main-content)

    - [Introduction](https://help.regrow.ag/measure-api-inventory?hsLang=en#introduction)
    - [Getting started](https://help.regrow.ag/measure-api-inventory?hsLang=en#getting-started)
    - [Outcomes](https://help.regrow.ag/measure-api-inventory?hsLang=en#outcomes)
- [Monitor API](https://help.regrow.ag/monitor-api?hsLang=en#main-content)

    - [Getting started](https://help.regrow.ag/monitor-api?hsLang=en#getting-started)
    - [Remote sensing technology](https://help.regrow.ag/monitor-api?hsLang=en#remote-sensing-technology)
    - [Integrate with Monitor API](https://help.regrow.ag/monitor-api?hsLang=en#integrate-with-monitor-api)
    - [Understanding Monitor field data](https://help.regrow.ag/monitor-api?hsLang=en#understanding-monitor-field-data)
- [Cradle to farm-gate emission factors](https://help.regrow.ag/cradle-to-farm-gate-emission-factors?hsLang=en#main-content)

    - [Getting started](https://help.regrow.ag/cradle-to-farm-gate-emission-factors?hsLang=en#getting-started)
    - [Methodology](https://help.regrow.ag/cradle-to-farm-gate-emission-factors?hsLang=en#methodology)
    - [On-field activity data sources](https://help.regrow.ag/cradle-to-farm-gate-emission-factors?hsLang=en#on-field-activity-data-sources)

[![Chill listening crop-3](https://help.regrow.ag/hs-fs/hubfs/03.%20Logos/Regrow_logo.png?width=96&height=24&name=Regrow_logo.png "Chill listening crop-3")](https://www.regrow.ag/)

Copyright © 2026, Regrow Agriculture Inc.