Viable logo

Transitioning from API v1 to v2

Calculation API v2 is the current Viable Pathway methodology. v1 keeps working, unchanged. This guide tells you what you must change, what you can leave alone, and why your numbers will move.

Each change is labelled Essential Recommended Optional

1. The short version

For product managers and anyone who needs the decision, not the detail.

What is happening?
v2 is the calculation method the Viable Pathway web app uses today. v1 is frozen: it gives the same results it always has, and it keeps working.
Why move?
More current market and grid trend data, results you can reproduce exactly, more than one row per activity type (for example two sites on the same electricity grid), richer cost figures, and new features that are only on v2.
How much work is it?
Small if you only change the web address, check the new numbers and make sure your code ignores new fields. Moderate if you also adopt the new request format, which is optional.
What if we do nothing?
Your integration keeps working on v1 with the numbers you have today. It will not get trend updates or new features. We will give notice before any change to v1.
The one thing to avoid
Changing the request format while still calling v1. v1 accepts it without an error but quietly gives wrong results. Always move the address to v2 first.
Essential
  • Point your calls at the v2 address.
  • Re-check your numbers: some pathways change on v2.
  • Make sure your code tolerates new fields in the response.
  • Update how you show payback periods.
Optional
  • Adopt the new, clearer request format.
  • Use several rows for the same activity type.
  • Use the new action and cost settings.
  • Use the conversion helper to update saved requests.

Which path are you on?

Check how your integration calls the API. If the address contains extended=true, you use the extended response.

2. What's new in v2

v2 lives next to v1. Insert /v2 after /api. Authentication and the query parameters extended and savePayload=false are the same.

v1 and v2 endpoints
Purpose v1 (frozen) v2 (current)
Calculate pathways POST /api/calculate POST /api/v2/calculate
Scenario analysis POST /api/scenarioanalysis POST /api/v2/scenarioanalysis
Methodology statement POST /api/methodology POST /api/v2/methodology
Pathway goal-seek — POST /api/v2/pathway-goalseek
GET /api/v2/pathway-goalseek/{jobId}
External Trends packs Newer market and grid trend data, published as versioned packs (latest: 2026Q3.1). Pin one for repeatable results.
Activity instance ids Name each activity row yourself. Several rows can share one catalogue activity, and actions target a specific row.
meta / target Organisation settings and target settings grouped into two objects. Flat fields still work.
Richer cost outputs Present value, annualised marginal cost, nominal (undiscounted) figures, opex and action lifespans.
Action controls enabled, endyear, endafter, absoluteChangeGrows on actions; macmethod, macvaluation, discountrate, includeFERA in meta.
Pathway goal-seek Asynchronous job that scales internal actions so your pathway meets an absolute target. v2 only.

Self-serve API Access plan keys cover calculate, the payload conversion helper, scenario analysis, methodology and reference data. If you need pathway goal-seek, ask us.

3. Request changes

v2 accepts your v1 request body unchanged. The v2 request format is optional, but it only works on v2 addresses.

Switch the address before the format. If you send a v2-format body to a v1 address, v1 returns HTTP 200 but ignores meta and target and cannot find activities by instance id. Internal actions stop applying, with no error.
Request and error differences between v1 and v2
Priority Change v1 v2
Essential An unchanged v1 payload is accepted by /api/v2/calculate POST /api/calculate with nested activitydata and flat root fields POST /api/v2/calculate accepts the same body and returns 200 in standard and extended mode. Numbers differ (see Why the numbers change).
Essential v1 returns 200 for v2-shaped payloads but ignores meta/target and flat activitydata Not backwards compatible 200 OK. meta/target ignored, internal actions on act_* ids dropped (internalActionsContributions: []), no activity trends (EXT = BAU) Payload is understood
Recommended Unknown externalTrendsVersion returns 400 with availableIds Not backwards compatible Field ignored, 200 HTTP 400 with error, message, latestId and availableIds, so you can see which pack ids are valid.
Recommended activitytrendid values changed; review disabledExternalTrends lists Not backwards compatible 102 = commuting_car_diesel, 103 = fuel_naturalgas, 131 exists 102 and 131 removed; 1021 = commuting diesel car, 1022 = petrol motorbike (new); 103 = vehicle rental. Trend activity is now a list of catalog ids/aliases
Recommended Both versions persist input by default; send ?savePayload=false for compute-only savePayload defaults to true savePayload still defaults to true. API keys should always send ?savePayload=false.
Optional POST /api/migrate-payload converts a v1 payload to v2 shape Nested activitydata (category → item@@region), flat root fields datastructureversion: 2, meta/target, flat activitydata keyed by '<catalogactivityid>@@<region>' (e.g. companyvehicle_car_diesel@@au-nsw); internal action references unchanged; activityname generated from the catalog id; emissionfactorname → emissionfactorid; emissionfactortrendid inferred (e.g. '1001' for grid electricity)
Optional Activity rows are identified by instance id; several rows may share a catalogactivityid Not backwards compatible One row per category.item@@region key, so a catalog activity + region can appear only once per org unit activitydata keys are free instance ids (e.g. act_depot_electricity, act_warehouse_electricity), both with catalogactivityid utilities_electricity_grid; actions and results reference the instance id
Optional Error bodies: validation errors are identical; v2 handler errors add path Validation / malformed JSON: { error, message, path, details? }. Handler errors: { error: 'Calculation failed', message } Validation errors: same shape, with path set to the v2 URL. 'Calculation failed' errors now also include path.
Optional Nested meta / target also works on /api/v2/methodology and /api/v2/scenarioanalysis /api/methodology and /api/scenarioanalysis ignore nested meta (for example meta.name is not used) Nested and flat bodies give the same result on all three v2 endpoints

The same organisation in both formats

Harbourview Freight Co is fictional. On the left, the v1 format: settings at the root and activities nested by category. On the right, the v2 format: settings in meta and target, datastructureversion: 2, flat activitydata keyed by your own instance ids, emissionfactorid instead of emissionfactorname, and actions that point at instance ids. The v2 body also pins meta.externalTrendsVersion: "2026Q3.1".

request-v1.json JSON
{
  "organisationid": "org_harbourview_freight_demo",
  "name": "Harbourview Freight Co (fictional)",
  "hqcountry": "australia",
  "industrytype": "c – manufacturing: 14 – wood product manufacturing",
  "currency": "aud",
  "revenue": 40,
  "grossassets": 25,
  "employees": 120,
  "desiredgrowth": 2,
  "projectionstartyear": 2025,
  "projectionendyear": 2050,
  "electricityapproach": "location",
  "neartermsbtitarget": null,
  "neartermsbtitargetyear": null,
  "userdefinedtargetbaseyear": 2024,
  "userdefinedtarget": {
    "targetKind": "absolute_per_scope",
    "neartermyear": 2030,
    "neartermscope1": -30,
    "neartermscope2": -30,
    "neartermscope3": -20,
    "netzeroyear": 2050,
    "netzeroscope1": -90,
    "netzeroscope2": -90,
    "netzeroscope3": -70
  },
  "orgunits": {
    "orgunit_depot": {
      "id": "orgunit_depot",
      "name": "Sydney Depot",
      "country": "australia",
      "region": "au-nsw",
      "currency": "aud",
      "historicemissionsunit": "tCO2e",
      "historicemissionsyears": [
        2022,
        2023,
        2024
      ],
      "historicemissions": {
        "1": [
          150,
          145,
          140
        ],
        "2": {
          "location": [
            175,
            170,
            168
          ],
          "market": [
            190,
            185,
            180
          ]
        },
        "3": [
          0,
          0,
          0
        ]
      },
      "activitydata": {
        "companyvehicle": {
          "car_diesel@@au-nsw": {
            "catalogactivityid": "companyvehicle_car_diesel",
            "emissionfactorname": "companyvehicle_car_diesel",
            "region": "au-nsw",
            "activitydatavalue": 300000,
            "activityuom": "km",
            "ghgpscope": 1,
            "ghgpscopecategory": "1-2 Direct Emissions from Mobile Combustion",
            "emissionfactorvalue": 0.2113,
            "emissionfactorunit": "kgCO2e",
            "emissionfactorsource": "desnz-uk",
            "operationalcostperunit": 0.3,
            "description": "Diesel fleet cars"
          },
          "car_bev@@au-nsw": {
            "catalogactivityid": "companyvehicle_car_bev",
            "emissionfactorname": "companyvehicle_car_bev",
            "region": "au-nsw",
            "activitydatavalue": 0,
            "activityuom": "km",
            "ghgpscope": 2,
            "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
            "emissionfactorvalue": 0.05794,
            "emissionfactorunit": "kgCO2e",
            "emissionfactorsource": "desnz-uk",
            "operationalcostperunit": 0.1,
            "description": "Battery electric fleet cars"
          }
        },
        "utilities": {
          "electricity_grid@@au-nsw": {
            "catalogactivityid": "utilities_electricity_grid",
            "emissionfactorname": "utilities_electricity_grid",
            "region": "au-nsw",
            "activitydatavalue": 250000,
            "activityuom": "kWh",
            "ghgpscope": 2,
            "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
            "emissionfactorvalue": 0.67,
            "emissionfactorvalue_location": 0.67,
            "emissionfactorvalue_market": 0.92,
            "emissionfactorunit": "kgCO2e",
            "emissionfactorsource": "dcceew-aus",
            "operationalcostperunit": 0.3,
            "description": "Depot grid electricity"
          }
        },
        "FuelStationary": {
          "EnergyHeat_Dieseloil@@au-nsw": {
            "catalogactivityid": "FuelStationary_EnergyHeat_Dieseloil",
            "emissionfactorname": "fuelliquid_stationary_dieseloil",
            "region": "au-nsw",
            "activitydatavalue": 800,
            "activityuom": "GJ",
            "ghgpscope": 1,
            "ghgpscopecategory": "1-1 Direct Emissions from Fuels (Stationary Combustion)",
            "emissionfactorvalue": 87.5,
            "emissionfactorunit": "kgCO2e",
            "emissionfactorsource": "dcceew-aus",
            "operationalcostperunit": 75,
            "description": "Backup diesel generators"
          }
        }
      },
      "internalactions": {
        "action_fleet_ev": {
          "actionname": "Switch diesel fleet cars to EVs",
          "actiontype": "Company Vehicles",
          "activity": "companyvehicle_car_diesel@@au-nsw",
          "multiplier": -0.6,
          "absolutechange": 0,
          "balancingactivity": "companyvehicle_car_bev@@au-nsw",
          "balancingactivityuom": "km",
          "balancingmultiplier": 1,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 120000,
          "capitalcostperunit": null,
          "startyear": 2027,
          "description": "Replace 60% of diesel car km with battery electric cars",
          "source": ""
        },
        "action_led": {
          "actionname": "LED lighting retrofit",
          "actiontype": "Energy Efficiency",
          "activity": "utilities_electricity_grid@@au-nsw",
          "multiplier": -0.15,
          "absolutechange": 0,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 40000,
          "capitalcostperunit": null,
          "startyear": 2026,
          "description": "Cut depot electricity use by 15%",
          "source": ""
        },
        "action_generators": {
          "actionname": "Retire two backup generators",
          "actiontype": "Energy Efficiency",
          "activity": "FuelStationary_EnergyHeat_Dieseloil@@au-nsw",
          "multiplier": 0,
          "absolutechange": -200,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 15000,
          "capitalcostperunit": null,
          "startyear": 2028,
          "description": "Remove 200 GJ/yr of generator diesel",
          "source": ""
        }
      }
    }
  }
}
request-v2.json JSON
{
  "organisationid": "org_harbourview_freight_demo",
  "datastructureversion": 2,
  "meta": {
    "name": "Harbourview Freight Co (fictional)",
    "hqcountry": "australia",
    "industrytype": "c – manufacturing: 14 – wood product manufacturing",
    "currency": "aud",
    "revenue": 40,
    "grossassets": 25,
    "employees": 120,
    "desiredgrowth": 2,
    "projectionstartyear": 2025,
    "projectionendyear": 2050,
    "electricityapproach": "location",
    "externalTrendsVersion": "2026Q3.1"
  },
  "target": {
    "neartermsbtitarget": null,
    "neartermsbtitargetyear": null,
    "userdefinedtargetbaseyear": 2024,
    "userdefinedtarget": {
      "targetKind": "absolute_per_scope",
      "neartermyear": 2030,
      "neartermscope1": -30,
      "neartermscope2": -30,
      "neartermscope3": -20,
      "netzeroyear": 2050,
      "netzeroscope1": -90,
      "netzeroscope2": -90,
      "netzeroscope3": -70
    }
  },
  "orgunits": {
    "orgunit_depot": {
      "id": "orgunit_depot",
      "name": "Sydney Depot",
      "country": "australia",
      "region": "au-nsw",
      "currency": "aud",
      "datastructureversion": 2,
      "historicemissionsunit": "tCO2e",
      "historicemissionsyears": [
        2022,
        2023,
        2024
      ],
      "historicemissions": {
        "1": [
          150,
          145,
          140
        ],
        "2": {
          "location": [
            175,
            170,
            168
          ],
          "market": [
            190,
            185,
            180
          ]
        },
        "3": [
          0,
          0,
          0
        ]
      },
      "activitydata": {
        "act_depot_car_diesel": {
          "activityname": "Diesel fleet cars",
          "catalogactivityid": "companyvehicle_car_diesel",
          "category": "companyvehicle",
          "region": "au-nsw",
          "activitydatavalue": 300000,
          "activityuom": "km",
          "ghgpscope": 1,
          "ghgpscopecategory": "1-2 Direct Emissions from Mobile Combustion",
          "emissionfactorid": "companyvehicle_car_diesel",
          "emissionfactorvalue": 0.2113,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "desnz-uk",
          "operationalcostperunit": 0.3,
          "description": "Diesel fleet cars"
        },
        "act_depot_car_bev": {
          "activityname": "Battery electric fleet cars",
          "catalogactivityid": "companyvehicle_car_bev",
          "category": "companyvehicle",
          "region": "au-nsw",
          "activitydatavalue": 0,
          "activityuom": "km",
          "ghgpscope": 2,
          "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
          "emissionfactorid": "companyvehicle_car_bev",
          "emissionfactorvalue": 0.05794,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "desnz-uk",
          "operationalcostperunit": 0.1,
          "description": "Battery electric fleet cars"
        },
        "act_depot_electricity": {
          "activityname": "Depot grid electricity",
          "catalogactivityid": "utilities_electricity_grid",
          "category": "utilities",
          "region": "au-nsw",
          "activitydatavalue": 250000,
          "activityuom": "kWh",
          "ghgpscope": 2,
          "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
          "emissionfactorid": "utilities_electricity_grid",
          "emissionfactorvalue": 0.67,
          "emissionfactorvalue_location": 0.67,
          "emissionfactorvalue_market": 0.92,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "dcceew-aus",
          "operationalcostperunit": 0.3,
          "description": "Depot grid electricity"
        },
        "act_depot_generator_diesel": {
          "activityname": "Backup diesel generators",
          "catalogactivityid": "FuelStationary_EnergyHeat_Dieseloil",
          "category": "FuelStationary",
          "region": "au-nsw",
          "activitydatavalue": 800,
          "activityuom": "GJ",
          "ghgpscope": 1,
          "ghgpscopecategory": "1-1 Direct Emissions from Fuels (Stationary Combustion)",
          "emissionfactorid": "fuelliquid_stationary_dieseloil",
          "emissionfactorvalue": 87.5,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "dcceew-aus",
          "operationalcostperunit": 75,
          "description": "Backup diesel generators"
        }
      },
      "internalactions": {
        "action_fleet_ev": {
          "actionname": "Switch diesel fleet cars to EVs",
          "actiontype": "Company Vehicles",
          "activity": "act_depot_car_diesel",
          "multiplier": -0.6,
          "absolutechange": 0,
          "balancingactivity": "act_depot_car_bev",
          "balancingactivityuom": "km",
          "balancingmultiplier": 1,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 120000,
          "capitalcostperunit": null,
          "startyear": 2027,
          "description": "Replace 60% of diesel car km with battery electric cars",
          "source": ""
        },
        "action_led": {
          "actionname": "LED lighting retrofit",
          "actiontype": "Energy Efficiency",
          "activity": "act_depot_electricity",
          "multiplier": -0.15,
          "absolutechange": 0,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 40000,
          "capitalcostperunit": null,
          "startyear": 2026,
          "description": "Cut depot electricity use by 15%",
          "source": ""
        },
        "action_generators": {
          "actionname": "Retire two backup generators",
          "actiontype": "Energy Efficiency",
          "activity": "act_depot_generator_diesel",
          "multiplier": 0,
          "absolutechange": -200,
          "absoluteChangeGrows": true,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 15000,
          "capitalcostperunit": null,
          "startyear": 2028,
          "description": "Remove 200 GJ/yr of generator diesel",
          "source": ""
        }
      }
    }
  }
}

New in v2: several rows for one activity type

In v1, each catalogue activity and region could appear only once per org unit. In v2 you choose the row id, so several rows can share one catalogactivityid and each action targets exactly one row. There is no v1 equivalent of this payload.

  • Rows sharing utilities_electricity_grid: act_depot_electricity (Depot grid electricity), act_warehouse_electricity (Warehouse grid electricity).
  • action_led (LED lighting retrofit) targets act_depot_electricity only.
  • action_warehouse_solar (Warehouse rooftop solar) targets act_warehouse_electricity only.
request-v2-multi-instance.json JSON
{
  "organisationid": "org_harbourview_freight_demo",
  "datastructureversion": 2,
  "meta": {
    "name": "Harbourview Freight Co (fictional)",
    "hqcountry": "australia",
    "industrytype": "c – manufacturing: 14 – wood product manufacturing",
    "currency": "aud",
    "revenue": 40,
    "grossassets": 25,
    "employees": 120,
    "desiredgrowth": 2,
    "projectionstartyear": 2025,
    "projectionendyear": 2050,
    "electricityapproach": "location",
    "externalTrendsVersion": "2026Q3.1"
  },
  "target": {
    "neartermsbtitarget": null,
    "neartermsbtitargetyear": null,
    "userdefinedtargetbaseyear": 2024,
    "userdefinedtarget": {
      "targetKind": "absolute_per_scope",
      "neartermyear": 2030,
      "neartermscope1": -30,
      "neartermscope2": -30,
      "neartermscope3": -20,
      "netzeroyear": 2050,
      "netzeroscope1": -90,
      "netzeroscope2": -90,
      "netzeroscope3": -70
    }
  },
  "orgunits": {
    "orgunit_depot": {
      "id": "orgunit_depot",
      "name": "Sydney Depot",
      "country": "australia",
      "region": "au-nsw",
      "currency": "aud",
      "datastructureversion": 2,
      "historicemissionsunit": "tCO2e",
      "historicemissionsyears": [
        2022,
        2023,
        2024
      ],
      "historicemissions": {
        "1": [
          150,
          145,
          140
        ],
        "2": {
          "location": [
            175,
            170,
            168
          ],
          "market": [
            190,
            185,
            180
          ]
        },
        "3": [
          0,
          0,
          0
        ]
      },
      "activitydata": {
        "act_depot_car_diesel": {
          "activityname": "Diesel fleet cars",
          "catalogactivityid": "companyvehicle_car_diesel",
          "category": "companyvehicle",
          "region": "au-nsw",
          "activitydatavalue": 300000,
          "activityuom": "km",
          "ghgpscope": 1,
          "ghgpscopecategory": "1-2 Direct Emissions from Mobile Combustion",
          "emissionfactorid": "companyvehicle_car_diesel",
          "emissionfactorvalue": 0.2113,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "desnz-uk",
          "operationalcostperunit": 0.3,
          "description": "Diesel fleet cars"
        },
        "act_depot_car_bev": {
          "activityname": "Battery electric fleet cars",
          "catalogactivityid": "companyvehicle_car_bev",
          "category": "companyvehicle",
          "region": "au-nsw",
          "activitydatavalue": 0,
          "activityuom": "km",
          "ghgpscope": 2,
          "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
          "emissionfactorid": "companyvehicle_car_bev",
          "emissionfactorvalue": 0.05794,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "desnz-uk",
          "operationalcostperunit": 0.1,
          "description": "Battery electric fleet cars"
        },
        "act_depot_electricity": {
          "activityname": "Depot grid electricity",
          "catalogactivityid": "utilities_electricity_grid",
          "category": "utilities",
          "region": "au-nsw",
          "activitydatavalue": 250000,
          "activityuom": "kWh",
          "ghgpscope": 2,
          "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
          "emissionfactorid": "utilities_electricity_grid",
          "emissionfactorvalue": 0.67,
          "emissionfactorvalue_location": 0.67,
          "emissionfactorvalue_market": 0.92,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "dcceew-aus",
          "operationalcostperunit": 0.3,
          "description": "Depot grid electricity"
        },
        "act_depot_generator_diesel": {
          "activityname": "Backup diesel generators",
          "catalogactivityid": "FuelStationary_EnergyHeat_Dieseloil",
          "category": "FuelStationary",
          "region": "au-nsw",
          "activitydatavalue": 800,
          "activityuom": "GJ",
          "ghgpscope": 1,
          "ghgpscopecategory": "1-1 Direct Emissions from Fuels (Stationary Combustion)",
          "emissionfactorid": "fuelliquid_stationary_dieseloil",
          "emissionfactorvalue": 87.5,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "dcceew-aus",
          "operationalcostperunit": 75,
          "description": "Backup diesel generators"
        },
        "act_warehouse_electricity": {
          "activityname": "Warehouse grid electricity",
          "catalogactivityid": "utilities_electricity_grid",
          "category": "utilities",
          "region": "au-nsw",
          "activitydatavalue": 120000,
          "activityuom": "kWh",
          "ghgpscope": 2,
          "ghgpscopecategory": "2-1 Indirect Emissions from Purchased Electricity",
          "emissionfactorid": "utilities_electricity_grid",
          "emissionfactorvalue": 0.67,
          "emissionfactorvalue_location": 0.67,
          "emissionfactorvalue_market": 0.92,
          "emissionfactorunit": "kgCO2e",
          "emissionfactorsource": "dcceew-aus",
          "operationalcostperunit": 0.3,
          "description": "Second site on the same grid tariff"
        }
      },
      "internalactions": {
        "action_fleet_ev": {
          "actionname": "Switch diesel fleet cars to EVs",
          "actiontype": "Company Vehicles",
          "activity": "act_depot_car_diesel",
          "multiplier": -0.6,
          "absolutechange": 0,
          "balancingactivity": "act_depot_car_bev",
          "balancingactivityuom": "km",
          "balancingmultiplier": 1,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 120000,
          "capitalcostperunit": null,
          "startyear": 2027,
          "description": "Replace 60% of diesel car km with battery electric cars",
          "source": ""
        },
        "action_led": {
          "actionname": "LED lighting retrofit",
          "actiontype": "Energy Efficiency",
          "activity": "act_depot_electricity",
          "multiplier": -0.15,
          "absolutechange": 0,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 40000,
          "capitalcostperunit": null,
          "startyear": 2026,
          "description": "Cut depot electricity use by 15%",
          "source": ""
        },
        "action_generators": {
          "actionname": "Retire two backup generators",
          "actiontype": "Energy Efficiency",
          "activity": "act_depot_generator_diesel",
          "multiplier": 0,
          "absolutechange": -200,
          "absoluteChangeGrows": true,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 15000,
          "capitalcostperunit": null,
          "startyear": 2028,
          "description": "Remove 200 GJ/yr of generator diesel",
          "source": ""
        },
        "action_warehouse_solar": {
          "actionname": "Warehouse rooftop solar",
          "actiontype": "Renewable Electricity Installation",
          "activity": "act_warehouse_electricity",
          "multiplier": -0.3,
          "absolutechange": 0,
          "balancingactivity": "",
          "balancingactivityuom": "",
          "balancingmultiplier": 0,
          "balancingabsolutechange": 0,
          "capitalcostcalculationmethod": "absolute",
          "capitalcost": 60000,
          "capitalcostperunit": null,
          "startyear": 2027,
          "description": "Offset 30% of warehouse grid electricity with rooftop solar",
          "source": ""
        }
      }
    }
  }
}

4. Standard response changes

These apply to everyone, including extended users. The response already uses some v2 fields even when you send a v1 request, so update your parsing even if you keep the v1 format.

  • New top-level keys: externalTrendsPack, plus warnings when you do not pin a trends pack (for example "externalTrendsVersion missing; used latest 2026Q3.1").
  • No top-level keys are removed and no types change.
  • Each internalActionsContributions item gains 35 fields. Parsers that reject unknown keys will break.
  • Contribution order can differ between versions. Key items on actionid, not array position.
  • paybackPeriod now uses discounted cash flow and counts the start year, so it is usually one year higher. The undiscounted figure is in nominal.paybackPeriod.
All 35 new contribution fields

Fields ending in Wtt are well-to-tank (Scope 3.3) values and stay null unless you set meta.includeFERA: true. balancing2* fields describe an optional second balancing activity.

annualisedMarginalCostbalancing2AbsoluteEffectStartYearbalancing2CostPerUnitbalancing2CumulativeActivityImpactbalancing2CumulativeActivityImpactByYearbalancing2ExpectedValuewithoutActionbalancing2Impactbalancing2ImpactWttbalancing2WttActivitybalancing2activitybalancing2multiplierbalancingImpactWttbalancingWttActivitydiscountedTotalAbatementeffectEndYearendyearequivalentAnnualCostghgReductionWttlifespanYearsnetImpactTotalnetImpactWttnominalnominalEquivalentAnnualCostnominalNetValuenominalTotalOpexnominalTotalSavingsopexCostpresentValueCapitalCostpresentValueNetValuepresentValueOpexStartYearpresentValueTotalOpexpresentValueTotalSavingstotalAbatementTotaltotalAbatementWttwttActivity

Payback period in the example

paybackPeriod for each action on v1 and v2
Action v1 paybackPeriod v2 paybackPeriod v2 nominal.paybackPeriod
Switch diesel fleet cars to EVs 3 4 4
LED lighting retrofit 3 4 4
Retire two backup generators 0 1 1

Years. If you show payback to users, update the label or switch to nominal.paybackPeriod.

Standard response differences between v1 and v2
Priority Change v1 v2
Essential warnings array when externalTrendsVersion is not supplied absent "warnings": ["externalTrendsVersion missing; used latest 2026Q3.1"]. Omitted when a version is pinned
Essential internalActionsContributions items gain extra fields (additive). Parsers must ignore unknown keys No WTT, present-value, opex, lifespan or balancing2 fields Adds annualisedMarginalCost, discountedTotalAbatement, effectEndYear, endyear, equivalentAnnualCost, lifespanYears, nominal{…}, nominalEquivalentAnnualCost, nominalNetValue, nominalTotalOpex, nominalTotalSavings, opexCost, presentValueCapitalCost, presentValueNetValue, presentValueOpexStartYear, presentValueTotalOpex, presentValueTotalSavings, netImpactWtt, netImpactTotal, ghgReductionWtt, totalAbatementWtt, totalAbatementTotal, wttActivity, balancingImpactWtt, balancingWttActivity, balancing2activity, balancing2multiplier, balancing2Impact, balancing2ImpactWtt, balancing2WttActivity, balancing2CostPerUnit, balancing2AbsoluteEffectStartYear, balancing2CumulativeActivityImpact, balancing2CumulativeActivityImpactByYear, balancing2ExpectedValuewithoutAction
Essential paybackPeriod is now discounted and counted inclusively (typically +1 year) Not backwards compatible year − startyear for the first year where undiscounted cumulative savings ≥ capital cost year − startyear + 1 for the first year where discounted cumulative cash flow (capital + opex) ≥ 0; undiscounted value in nominal.paybackPeriod
Essential internalActionsContributions order differs; key by actionid Not backwards compatible e.g. custom_1779070723272, useraction_2537589345, … e.g. useraction_2537589345, custom_1779070915054, …
Recommended Contribution activity / balancingactivity echo the request's activity instance ids Nested payloads: 'category_item@@region' strings, e.g. utilities_electricity_grid@@au-nsw Same strings for nested payloads; flat v2 payloads return your instance ids (e.g. act_depot_car_diesel). No activitymetadata on contribution items in either version
Optional balancingCumulativeActivityImpactByYear includes zero-valued years before startyear Keys start at startyear (e.g. 2027) Keys start at the projection start year (2025, 2026 = 0)
response-standard-v1.json JSON
{
  "userdefinedtargetbaseyear": 2024,
  "userdefinedtarget": {
    "netzeroscope1": -90,
    "netzeroyear": 2050,
    "netzeroscope2": -90,
    "netzeroscope3": -70,
    "intensityOutputBase": null,
    "targetKind": "absolute_per_scope",
    "intensityOutputNearTerm": null,
    "intensityOutputNetZero": null,
    "neartermscope1": -30,
    "neartermyear": 2030,
    "neartermscope2": -30,
    "neartermscope3": -20,
    "intensityDenominatorUnit": null
  },
  "neartermsbtitargetyear": null,
  "neartermsbtitarget": null,
  "organisationid": "org_harbourview_freight_demo",
  "name": "Harbourview Freight Co (fictional)",
  "historicemissionsyears": [
    2022,
    2023,
    2024
  ],
  "historicemissions": {
    "1": [
      150,
      145,
      140
    ],
    "2": {
      "location": [
        175,
        170,
        168
      ],
      "market": [
        190,
        185,
        180
      ]
    },
    "3": [
      0,
      0,
      0
    ]
  },
  "projectionyears": [
    2025,
    2030,
    2040,
    2050
  ],
  "targetyears": [
    2024,
    2025,
    2026,
    2027,
    2028,
    2029,
    2030,
    2031,
    2032,
    2033,
    2034,
    2035,
    2036,
    2037,
    2038,
    2039,
    2040,
    2041,
    2042,
    2043,
    2044,
    2045,
    2046,
    2047,
    2048,
    2049,
    2050
  ],
  "orgUnits": [
    {
      "id": "orgunit_depot",
      "name": "Sydney Depot"
    }
  ],
  "ghgBAUsumperyear": [
    300.89,
    332.2069,
    404.9583,
    493.6419
  ],
  "ghgEXTsumperyear": [
    300.89,
    268.4003,
    257.9803,
    307.9961
  ],
  "ghgEXTsumperyearMin": [
    300.89,
    308.6714,
    311.4955,
    371.8154
  ],
  "ghgEXTsumperyearMax": [
    300.89,
    233.2042,
    211.2092,
    252.2194
  ],
  "ghgINTsumperyear": [
    300.89,
    202.2533,
    191.5597,
    231.8342
  ],
  "ghgINTsumperyearMin": [
    300.89,
    236.4838,
    237.0475,
    286.0806
  ],
  "ghgINTsumperyearMax": [
    300.89,
    172.3366,
    151.8042,
    184.4239
  ],
  "waterfallMultiYear": {
    "waterfall2030": {
      "totalGrowthContribution": 31.3169,
      "totalEXTContribution": -63.8066,
      "totalMeasuresContribution": -66.147,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 215.6,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 202.2533
    },
    "waterfall2040": {
      "totalGrowthContribution": 104.0683,
      "totalEXTContribution": -146.978,
      "totalMeasuresContribution": -66.4207,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 123.2,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 191.5597
    },
    "waterfall2050": {
      "totalGrowthContribution": 192.7519,
      "totalEXTContribution": -185.6458,
      "totalMeasuresContribution": -76.162,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 30.8,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 231.8342
    }
  },
  "sbtiPathwayValues": null,
  "userDefinedPathwayValues": [
    308,
    292.6,
    277.2,
    261.8,
    246.4,
    231,
    215.6,
    206.36,
    197.12,
    187.88,
    178.64,
    169.4,
    160.16,
    150.92,
    141.68,
    132.44,
    123.2,
    113.96,
    104.72,
    95.48,
    86.24,
    77,
    67.76,
    58.52,
    49.28,
    40.04,
    30.8
  ],
  "internalActionsContributions": [
    {
      "actionname": "Switch diesel fleet cars to EVs",
      "multiplier": -0.6,
      "balancingCumulativeActivityImpact": 5697163.0292,
      "netImpact": -28.72,
      "expectedValuewithoutAction": 312120,
      "annualSavingsStartYear": 37454.4,
      "marginalCost": -1166.7768,
      "cumulativeActivityImpact": -5697163.0292,
      "balancingactivity": "companyvehicle_car_bev@@au-nsw",
      "totalAbatement": 873.7169,
      "ghgReduction": -39.5706,
      "activity": "companyvehicle_car_diesel@@au-nsw",
      "paybackPeriod": 3,
      "actiontype": "Company Vehicles",
      "actionid": "action_fleet_ev",
      "primaryCostPerUnit": 0.3,
      "capitalCost": 120000,
      "balancingCumulativeActivityImpactByYear": {
        "2030": 771861.7734,
        "2040": 2991471.3458,
        "2050": 5697163.0292
      },
      "absoluteEffectStartYear": -187272,
      "yearlyBreakdown": {
        "primary": {
          "2025": {
            "activityDataMACBaseline2": 300000,
            "activityDataAfterAction2": 300000,
            "actionActivityDataImpact2": 0,
            "annualSavings": 0,
            "cumulativeSavings": 0,
            "annualAbatement": 0,
            "cumulativeAbatement": 0
          },
          "2030": {
            "activityDataMACBaseline2": 331224.241,
            "activityDataAfterAction2": 132489.6964,
            "actionActivityDataImpact2": -198734.5446,
            "annualSavings": 59620.3634,
            "cumulativeSavings": 231558.532,
            "annualAbatement": 41.9926,
            "cumulativeAbatement": 163.0944
          },
          "2040": {
            "activityDataMACBaseline2": 403760.5015,
            "activityDataAfterAction2": 161504.2006,
            "actionActivityDataImpact2": -242256.3009,
            "annualSavings": 72676.8903,
            "cumulativeSavings": 897441.4037,
            "annualAbatement": 51.1888,
            "cumulativeAbatement": 632.0979
          },
          "2050": {
            "activityDataMACBaseline2": 492181.7983,
            "activityDataAfterAction2": 196872.7193,
            "actionActivityDataImpact2": -295309.079,
            "annualSavings": 88592.7237,
            "cumulativeSavings": 1709148.9088,
            "annualAbatement": 62.3988,
            "cumulativeAbatement": 1203.8105
          }
        },
        "balancing": {
          "2025": {
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 0,
            "actionActivityDataImpact2": 0,
            "annualSavings": 0,
            "cumulativeSavings": 0,
            "annualAbatement": 0,
            "cumulativeAbatement": 0
          },
          "2030": {
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 198734.5446,
            "actionActivityDataImpact2": 198734.5446,
            "annualSavings": -19873.4545,
            "cumulativeSavings": -77186.1773,
            "annualAbatement": -11.5147,
            "cumulativeAbatement": -44.7217
          },
          "2040": {
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 242256.3009,
            "actionActivityDataImpact2": 242256.3009,
            "annualSavings": -24225.6301,
            "cumulativeSavings": -299147.1346,
            "annualAbatement": -14.0363,
            "cumulativeAbatement": -173.3258
          },
          "2050": {
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 295309.079,
            "actionActivityDataImpact2": 295309.079,
            "annualSavings": -29530.9079,
            "cumulativeSavings": -569716.3029,
            "annualAbatement": -17.1102,
            "cumulativeAbatement": -330.0936
          }
        },
        "net": {
          "2025": {
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "actionActivityDataImpact2": null,
            "annualSavings": 0,
            "cumulativeSavings": 0,
            "annualAbatement": 0,
            "cumulativeAbatement": 0
          },
          "2030": {
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "actionActivityDataImpact2": null,
            "annualSavings": 39746.9089,
            "cumulativeSavings": 154372.3547,
            "annualAbatement": 30.4779,
            "cumulativeAbatement": 118.3727
          },
          "2040": {
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "actionActivityDataImpact2": null,
            "annualSavings": 48451.2602,
            "cumulativeSavings": 598294.2692,
            "annualAbatement": 37.1524,
            "cumulativeAbatement": 458.772
          },
          "2050": {
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "actionActivityDataImpact2": null,
            "annualSavings": 59061.8158,
            "cumulativeSavings": 1139432.6058,
            "annualAbatement": 45.2886,
            "cumulativeAbatement": 873.7169
          }
        }
      },
      "balancingmultiplier": 1,
      "source": "",
      "balancingCostPerUnit": 0.1,
      "description": "Replace 60% of diesel car km with battery electric cars",
      "balancingAbsoluteEffectStartYear": 187272,
      "balancingExpectedValuewithoutAction": 0,
      "balancingImpact": 10.8505,
      "startyear": 2027,
      "orgunitid": "orgunit_depot"
    },
    {
      "actionname": "LED lighting retrofit",
      "multiplier": -0.15,
      "balancingCumulativeActivityImpact": null,
      "netImpact": -24.492,
      "expectedValuewithoutAction": 255000,
      "annualSavingsStartYear": 11475,
      "marginalCost": -886.7394,
      "cumulativeActivityImpact": -1225158.9644,
      "balancingactivity": "",
      "totalAbatement": 369.3844,
      "ghgReduction": -24.492,
      "activity": "utilities_electricity_grid@@au-nsw",
      "paybackPeriod": 3,
      "actiontype": "Energy Efficiency",
      "actionid": "action_led",
      "primaryCostPerUnit": 0.3,
      "capitalCost": 40000,
      "balancingCumulativeActivityImpactByYear": null,
      "absoluteEffectStartYear": -38250,
      "balancingmultiplier": 0,
      "source": "",
      "balancingCostPerUnit": null,
      "description": "Cut depot electricity use by 15%",
      "balancingAbsoluteEffectStartYear": null,
      "balancingExpectedValuewithoutAction": null,
      "balancingImpact": 0,
      "startyear": 2026,
      "orgunitid": "orgunit_depot"
    },
    {
      "actionname": "Retire two backup generators",
      "multiplier": 0,
      "balancingCumulativeActivityImpact": null,
      "netImpact": -17.5,
      "expectedValuewithoutAction": 848.9664,
      "annualSavingsStartYear": 15000,
      "marginalCost": -819.8758,
      "cumulativeActivityImpact": -4600,
      "balancingactivity": "",
      "totalAbatement": 402.5,
      "ghgReduction": -17.5,
      "activity": "FuelStationary_EnergyHeat_Dieseloil@@au-nsw",
      "paybackPeriod": 0,
      "actiontype": "Energy Efficiency",
      "actionid": "action_generators",
      "primaryCostPerUnit": 75,
      "capitalCost": 15000,
      "balancingCumulativeActivityImpactByYear": null,
      "absoluteEffectStartYear": -200,
      "balancingmultiplier": 0,
      "source": "",
      "balancingCostPerUnit": null,
      "description": "Remove 200 GJ/yr of generator diesel",
      "balancingAbsoluteEffectStartYear": null,
      "balancingExpectedValuewithoutAction": null,
      "balancingImpact": 0,
      "startyear": 2028,
      "orgunitid": "orgunit_depot"
    }
  ],
  "methodology": {
    "organisation": {
      "title": "Viable Pathway Projection Methodology",
      "content": "\n    <div style=\"background-color: #f8f9fa; padding: 20px; border-radius: 8px; border-left: 4px solid #007bff; margin: 20px 0;\">\n      \n      <p>This methodology statement provides a detailed explanation of the emission pathway calculations… [truncated]"
    },
    "orgunit_depot": {
      "title": "Viable Pathway Projection Methodology",
      "content": "\n    <div style=\"background-color: #f8f9fa; padding: 20px; border-radius: 8px; border-left: 4px solid #007bff; margin: 20px 0;\">\n      \n      <p>This methodology statement provides a detailed explanation of the emission pathway calculations… [truncated]"
    }
  },
  "transitionPlan": {
    "includeAasbContent": true,
    "hasAnyTarget": true,
    "hasSBTiTarget": null,
    "hasUserDefinedTarget": true,
    "targetDescription": "a near-term per-scope target by 2030 and net-zero per-scope target by 2050",
    "userDefinedTargetTableHTML": "\n            <table class=\"table table-bordered table-sm\" style=\"max-width: 500px;\">\n                <thead>\n                    <tr>\n                        <th></th>\n                        <th>Year</th>\n                        <th>Scope … [truncated]",
    "neartermsbtitarget": null,
    "neartermsbtitargetyear": null,
    "pathwayAlignment": {
      "alignment": "none",
      "difference": 0,
      "percentage": 0
    },
    "sbtiCumulative": 0,
    "userDefinedCumulative": 4204.2,
    "projectionstartyear": 2025,
    "projectionendyear": 2050,
    "projectionstartyearemissions": 300.89,
    "desiredgrowth": 2,
    "userdefinedtargetbaseyear": 2024,
    "electricityapproach": "location",
    "bau2030": 332.2069,
    "bau2040": 404.9583,
    "bau2050": 493.6419,
    "baubaseyear": 140,
    "sbti2030": 0,
    "sbti2040": 0,
    "sbti2050": 0,
    "sbtipsy": 0,
    "int2030": 202.2533,
    "int2040": 191.5597,
    "int2050": 231.8342,
    "ext2030": 268.4003,
    "ext2040": 257.9803,
    "ext2050": 307.9961,
    "userdefinedtarget2030": 215.6,
    "userdefinedtarget2040": 123.2,
    "userdefinedtarget2050": 30.8,
    "userdefinedpsy": 292.6,
    "gap2030": 332.2069,
    "gap2040": 404.9583,
    "gap2050": 493.6419,
    "gap2030WithActions": 202.2533,
    "gap2040WithActions": 191.5597,
    "gap2050WithActions": 231.8342,
    "pathwayTableData": {
      "Business-as-Usual (BAU)": {
        "description": "Emissions without any mitigation actions",
        "data": {
          "2025": 300.89,
          "2030": 332.2069,
          "2040": 404.9583,
          "2050": 493.6419
        }
      },
      "External Activity Trends": {
        "description": "Emissions with external activity trends",
        "data": {
          "2025": 300.89,
          "2030": 268.4003,
          "2040": 257.9803,
          "2050": 307.9961
        }
      },
      "Internal Actions": {
        "description": "Emissions with internal mitigation actions",
        "data": {
          "2025": 300.89,
          "2030": 202.2533,
          "2040": 191.5597,
          "2050": 231.8342
        }
      },
      "Custom Target": {
        "description": "Customer target pathway",
        "data": {
          "2025": 292.6,
          "2030": 215.6,
          "2040": 123.2,
          "2050": 30.8
        }
      }
    },
    "historicEmissionsArray": [
      {
        "year": 2022,
        "totalEmissions": 150,
        "scope1": 150,
        "scope2": 0,
        "scope3": 0
      },
      {
        "year": 2023,
        "totalEmissions": 145,
        "scope1": 145,
        "scope2": 0,
        "scope3": 0
      },
      {
        "year": 2024,
        "totalEmissions": 140,
        "scope1": 140,
        "scope2": 0,
        "scope3": 0
      }
    ],
    "topInternalActions": [
      {
        "actionname": "Switch diesel fleet cars to EVs",
        "multiplier": -0.6,
        "balancingCumulativeActivityImpact": 5697163.0292,
        "netImpact": -28.72,
        "expectedValuewithoutAction": 312120,
        "annualSavingsStartYear": 37454.4,
        "marginalCost": -1166.7768,
        "cumulativeActivityImpact": -5697163.0292,
        "balancingactivity": "companyvehicle_car_bev@@au-nsw",
        "totalAbatement": 873.7169,
        "ghgReduction": -39.5706,
        "activity": "companyvehicle_car_diesel@@au-nsw",
        "paybackPeriod": 3,
        "actiontype": "Company Vehicles",
        "actionid": "action_fleet_ev",
        "primaryCostPerUnit": 0.3,
        "capitalCost": 120000,
        "balancingCumulativeActivityImpactByYear": {
          "2030": 771861.7734,
          "2040": 2991471.3458,
          "2050": 5697163.0292
        },
        "absoluteEffectStartYear": -187272,
        "balancingmultiplier": 1,
        "source": "",
        "balancingCostPerUnit": 0.1,
        "description": "Replace 60% of diesel car km with battery electric cars",
        "balancingAbsoluteEffectStartYear": 187272,
        "balancingExpectedValuewithoutAction": 0,
        "balancingImpact": 10.8505,
        "startyear": 2027,
        "orgunitid": "orgunit_depot"
      }
    ],
    "topExternalTrends": [],
    "topEmissionFactorTrends": [
      {
        "emissionfactorname": "utilities_electricity_grid",
        "activityuom": "kWh",
        "cumulativeImpactWithoutTrend": 5639.8767,
        "context": "Australia is committed to reducing GHG emissions to 43% below 2005 levels by 2030. A key contribution to this target is the expanded Capacity Investment Scheme to deliver on the government’s target to achieve 82% renewable electricity by 20… [truncated]",
        "activity": "utilities_electricity_grid@@au-nsw",
        "cumulativeTrendImpact": -3009.8143,
        "emissionfactorid": "1001",
        "status": "2025-06-01T00:00:00Z",
        "projectionapproach": "Weighted projection based on pedigree quality assessments, normalised to 2024 emission factor",
        "source": "/emissionfactortrends/1001",
        "cumulativeImpactWithTrend": 2630.0624,
        "category": "utilities",
        "orgunitid": "orgunit_depot"
      }
    ],
    "globalPurchasedGoodsTrendTotal": 0,
    "ext2030Percent": 19.2069,
    "ext2050Percent": 37.6074,
    "int2030PercentAboveSBTi": 0,
    "int2050PercentAboveSBTi": 0,
    "totalCapitalCost": 175000,
    "hasActionsWithCosts": true,
    "cumulativeCapitalCostsByYear": {
      "2025": 0,
      "2030": 175000,
      "2040": 175000,
      "2050": 175000
    },
    "projectionyears": [
      2025,
      2030,
      2040,
      2050
    ],
    "perScopeTransitionSummary": {
      "1": {
        "baseYear": 2024,
        "baseYearEmissions": 140,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 140,
        "int2030": 87.7807,
        "int2040": 110.8366,
        "target2030": 98,
        "target2040": 56,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      },
      "2": {
        "baseYear": 2024,
        "baseYearEmissions": 168,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 168,
        "int2030": 114.4726,
        "int2040": 80.723,
        "target2030": 117.6,
        "target2040": 67.2,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      },
      "3": {
        "baseYear": 2024,
        "baseYearEmissions": 0,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 0,
        "int2030": 0,
        "int2040": 0,
        "target2030": 0,
        "target2040": 0,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      }
    },
    "aasbAssessment": {
      "status": "group",
      "groupId": 3,
      "groupLabel": "Group 3",
      "reportingStartDate": "2027-07-01",
      "assuranceRoadmap": [
        {
          "reporting_year": "Year 1 (FY27-28)",
          "scope": "Governance, Strategy, Scope 1 & 2 Emissions",
          "level": "Limited Assurance"
        },
        {
          "reporting_year": "Year 2 & 3 (FY28-30)",
          "scope": "Strategy, Scenario Analysis, Transition Plan, Risk Management, and Scope 3 Emissions",
          "level": "Limited Assurance"
        },
        {
          "reporting_year": "Year 4+ (FY30 onwards)",
          "scope": "All climate-related disclosures (Full Report)",
          "level": "Reasonable Assurance"
        }
      ]
    },
    "reportingCurrency": "AUD",
    "recLgcPpaData": null,
    "recLgcPpaByOrgUnit": {},
    "recPurchaseDisclosure": null,
    "htmlContent": {
      "introduction": "\n        <section>\n            <h2>What is a CTAP?</h2>\n            <p>\n                A Climate Transition Action Plan (CTAP) is a comprehensive strategy that outlines how an organisation \n                will align its business model, op… [truncated]",
      "climateTarget": "<section><h2>Climate Target</h2><div class=\"mb-4\"><h3>AASB requirements</h3><p>Based on our revenue, assets and employees, we are a <strong>Group 3</strong> organisation. Our AASB S2 disclosures and assurance requirements are:</p><table cla… [truncated]",
      "keyFindings": "<section><h2>Key Findings</h2>\n        <p>\n            Our projection start year (2025) emissions totaled 301 tCO2e. \n            Under a business-as-usual scenario, assuming our revenue continues to grow at a constant rate of 2 %, our emis… [truncated]",
      "pathwaysGraphIntro": "<section><h2>Emissions Pathways</h2>\n            <p>\n                The following chart illustrates our projected emissions pathways under different scenarios:\n            </p>\n        </section>",
      "perScopePathwaysIntro": "\n        <section style=\"margin-top: 24px;\">\n            <h2>Emissions pathways by scope</h2>\n            <p>\n                The following charts show projected emissions for each GHG scope separately, using the same\n                scenar… [truncated]",
      "perScopePathwayNarratives": {
        "1": "<p>For Scope 1, base year (2024) emissions were 140 tCO₂e. The latest historic reporting year shown is 2024, with 140 tCO₂e for this scope. At 2030, the internal-actions pathway is 88 tCO₂e, compared to the custom target pathway target of 9… [truncated]",
        "2": "<p>For Scope 2, base year (2024) emissions were 168 tCO₂e. The latest historic reporting year shown is 2024, with 168 tCO₂e for this scope. At 2030, the internal-actions pathway is 114 tCO₂e, compared to the custom target pathway target of … [truncated]",
        "3": "<p>For Scope 3, base year (2024) emissions were 0 tCO₂e. The latest historic reporting year shown is 2024, with 0 tCO₂e for this scope. At 2030, the internal-actions pathway is 0 tCO₂e, compared to the custom target pathway target of 0 tCO₂… [truncated]"
      },
      "pathwaysTableNote": "",
      "internalActionsIntro": "\n        <section>\n            <h2>Key Internal Actions</h2>\n            <p>\n                Our transition plan includes several strategic internal actions designed to reduce \n                emissions across our operations. These actions … [truncated]",
      "internalActionsConclusion": "\n        <section>\n            <p>\n                These internal actions represent our primary levers for emissions reduction and \n                demonstrate our commitment to proactive climate action. The implementation of \n             … [truncated]",
      "recPurchaseDisclosure": "",
      "recLgcPpa": "",
      "recLgcPpaByOrgUnit": {},
      "costAssessment": "<section><h2>Cost Assessment</h2>\n            <p>\n                The implementation of all internal actions in our transition plan requires a total \n                capital investment of $175,000. This investment represents the \n          … [truncated]",
      "externalActivityTrendsIntro": "\n        <section>\n            <h2>Key External Activity Trends</h2>\n            <p>\n                External factors beyond our direct control will significantly influence our \n                emissions profile over the transition period. … [truncated]",
      "externalActivityTrendsConclusion": "\n        <section>\n            <p>\n                These external trends generally have a positive impact on our emissions pathway, \n                reflecting the broader societal transition toward a low-carbon economy. While \n            … [truncated]",
      "emissionFactorTrendsIntro": "\n        <section>\n            <h2>Key Emission Factor Trends</h2>\n            <p>\n                Emission factor trends represent the projected changes in the carbon intensity \n                of various energy sources and technologies ov… [truncated]",
      "emissionFactorTrendsConclusion": "\n        <section>\n            <p>\n                These emission factor trends represent significant opportunities for emissions \n                reduction through technological advancement and policy-driven decarbonisation. \n             … [truncated]",
      "historicEmissionsIntro": "\n        <section>\n            <h2>Historic Emissions Overview</h2>\n            <p>\n                Our historic emissions data provides the baseline for understanding our\n                emissions trajectory and setting appropriate reducti… [truncated]"
    }
  },
  "orgunitResults": [
    {
      "id": "orgunit_depot",
      "orgunitid": "orgunit_depot",
      "ghgBAUsumperyear": [
        300.89,
        332.2069,
        404.9583,
        493.6419
      ],
      "ghgEXTsumperyear": [
        300.89,
        268.4003,
        257.9803,
        307.9961
      ],
      "ghgEXTsumperyearMin": [
        300.89,
        308.6714,
        311.4955,
        371.8154
      ],
      "ghgEXTsumperyearMax": [
        300.89,
        233.2042,
        211.2092,
        252.2194
      ],
      "ghgINTsumperyear": [
        300.89,
        202.2533,
        191.5597,
        231.8342
      ],
      "ghgINTsumperyearMin": [
        300.89,
        236.4838,
        237.0475,
        286.0806
      ],
      "ghgINTsumperyearMax": [
        300.89,
        172.3366,
        151.8042,
        184.4239
      ],
      "waterfallMultiYear": {
        "waterfall2030": {
          "totalGrowthContribution": 31.3169,
          "totalEXTContribution": -63.8066,
          "totalMeasuresContribution": -66.147,
          "targetvalue_sbti": null,
          "targetvalue_custom": 215.6,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 202.2533
        },
        "waterfall2040": {
          "totalGrowthContribution": 104.0683,
          "totalEXTContribution": -146.978,
          "totalMeasuresContribution": -66.4207,
          "targetvalue_sbti": null,
          "targetvalue_custom": 123.2,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 191.5597
        },
        "waterfall2050": {
          "totalGrowthContribution": 192.7519,
          "totalEXTContribution": -185.6458,
          "totalMeasuresContribution": -76.162,
          "targetvalue_sbti": null,
          "targetvalue_custom": 30.8,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 231.8342
        }
      },
      "sbtiPathwayValues": null,
      "internalActionsContributions": [
        {
          "actionname": "LED lighting retrofit",
          "multiplier": -0.15,
          "balancingCumulativeActivityImpact": null,
          "netImpact": -24.492,
          "expectedValuewithoutAction": 255000,
          "annualSavingsStartYear": 11475,
          "marginalCost": -886.7394,
          "cumulativeActivityImpact": -1225158.9644,
          "balancingactivity": "",
          "totalAbatement": 369.3844,
          "ghgReduction": -24.492,
          "activity": "utilities_electricity_grid@@au-nsw",
          "paybackPeriod": 3,
          "actiontype": "Energy Efficiency",
          "actionid": "action_led",
          "primaryCostPerUnit": 0.3,
          "capitalCost": 40000,
          "balancingCumulativeActivityImpactByYear": null,
          "absoluteEffectStartYear": -38250,
          "balancingmultiplier": 0,
          "source": "",
          "balancingCostPerUnit": null,
          "description": "Cut depot electricity use by 15%",
          "balancingAbsoluteEffectStartYear": null,
          "balancingExpectedValuewithoutAction": null,
          "balancingImpact": 0,
          "startyear": 2026
        }
      ]
    }
  ]
}
response-standard-v2.json JSON
{
  "userdefinedtargetbaseyear": 2024,
  "userdefinedtarget": {
    "netzeroscope1": -90,
    "netzeroyear": 2050,
    "netzeroscope2": -90,
    "netzeroscope3": -70,
    "intensityOutputBase": null,
    "targetKind": "absolute_per_scope",
    "intensityOutputNearTerm": null,
    "intensityOutputNetZero": null,
    "neartermscope1": -30,
    "neartermyear": 2030,
    "neartermscope2": -30,
    "neartermscope3": -20,
    "intensityDenominatorUnit": null
  },
  "neartermsbtitargetyear": null,
  "neartermsbtitarget": null,
  "organisationid": "org_harbourview_freight_demo",
  "name": "Harbourview Freight Co (fictional)",
  "historicemissionsyears": [
    2022,
    2023,
    2024
  ],
  "historicemissions": {
    "1": [
      150,
      145,
      140
    ],
    "2": {
      "location": [
        175,
        170,
        168
      ],
      "market": [
        190,
        185,
        180
      ]
    },
    "3": [
      0,
      0,
      0
    ]
  },
  "projectionyears": [
    2025,
    2030,
    2040,
    2050
  ],
  "targetyears": [
    2024,
    2025,
    2026,
    2027,
    2028,
    2029,
    2030,
    2031,
    2032,
    2033,
    2034,
    2035,
    2036,
    2037,
    2038,
    2039,
    2040,
    2041,
    2042,
    2043,
    2044,
    2045,
    2046,
    2047,
    2048,
    2049,
    2050
  ],
  "orgUnits": [
    {
      "id": "orgunit_depot",
      "name": "Sydney Depot"
    }
  ],
  "ghgBAUsumperyear": [
    300.89,
    332.2069,
    404.9583,
    493.6419
  ],
  "ghgEXTsumperyear": [
    300.89,
    268.4003,
    257.9803,
    307.9961
  ],
  "ghgEXTsumperyearMin": [
    300.89,
    308.6714,
    311.4955,
    371.8154
  ],
  "ghgEXTsumperyearMax": [
    300.89,
    233.2042,
    211.2092,
    252.2194
  ],
  "ghgINTsumperyear": [
    300.89,
    201.5463,
    186.8654,
    222.2795
  ],
  "ghgINTsumperyearMin": [
    300.89,
    235.7768,
    232.3533,
    276.5259
  ],
  "ghgINTsumperyearMax": [
    300.89,
    171.6296,
    147.11,
    174.8693
  ],
  "waterfallMultiYear": {
    "waterfall2030": {
      "totalGrowthContribution": 31.3169,
      "totalEXTContribution": -63.8066,
      "totalMeasuresContribution": -66.854,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 215.6,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 201.5463
    },
    "waterfall2040": {
      "totalGrowthContribution": 104.0683,
      "totalEXTContribution": -146.978,
      "totalMeasuresContribution": -71.1149,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 123.2,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 186.8654
    },
    "waterfall2050": {
      "totalGrowthContribution": 192.7519,
      "totalEXTContribution": -185.6458,
      "totalMeasuresContribution": -85.7166,
      "targetvalue_sbti": 0,
      "targetvalue_custom": 30.8,
      "projectionstartyear": 2025,
      "projectionstartyearemissions": 300.89,
      "waterfallValue": 222.2795
    }
  },
  "sbtiPathwayValues": null,
  "userDefinedPathwayValues": [
    308,
    292.6,
    277.2,
    261.8,
    246.4,
    231,
    215.6,
    206.36,
    197.12,
    187.88,
    178.64,
    169.4,
    160.16,
    150.92,
    141.68,
    132.44,
    123.2,
    113.96,
    104.72,
    95.48,
    86.24,
    77,
    67.76,
    58.52,
    49.28,
    40.04,
    30.8
  ],
  "internalActionsContributions": [
    {
      "opexCost": 0,
      "balancing2CumulativeActivityImpact": null,
      "actionname": "Switch diesel fleet cars to EVs",
      "multiplier": -0.6,
      "balancingCumulativeActivityImpact": 5697163.0292,
      "netImpactTotal": -28.72,
      "presentValueTotalOpex": 0,
      "netImpact": -28.72,
      "expectedValuewithoutAction": 312120,
      "annualSavingsStartYear": 37454.4,
      "wttActivity": null,
      "marginalCost": -1166.7768,
      "effectEndYear": 2050,
      "balancing2activity": "",
      "cumulativeActivityImpact": -5697163.0292,
      "balancingactivity": "act_depot_car_bev",
      "ghgReductionWtt": null,
      "presentValueNetValue": 1019432.6058,
      "totalAbatement": 873.7169,
      "presentValueTotalSavings": 1139432.6058,
      "discountedTotalAbatement": 873.7169,
      "totalAbatementWtt": null,
      "balancing2WttActivity": null,
      "ghgReduction": -39.5706,
      "balancingWttActivity": null,
      "annualisedMarginalCost": -1166.7768,
      "activity": "act_depot_car_diesel",
      "paybackPeriod": 4,
      "actiontype": "Company Vehicles",
      "nominalNetValue": 1019432.6058,
      "lifespanYears": 24,
      "actionid": "action_fleet_ev",
      "nominalTotalSavings": 1139432.6058,
      "primaryCostPerUnit": 0.3,
      "nominalEquivalentAnnualCost": -42476.3586,
      "netImpactWtt": null,
      "capitalCost": 120000,
      "balancing2CumulativeActivityImpactByYear": null,
      "presentValueOpexStartYear": 0,
      "balancingCumulativeActivityImpactByYear": {
        "2025": 0,
        "2030": 771861.7734,
        "2040": 2991471.3458,
        "2050": 5697163.0292
      },
      "equivalentAnnualCost": -42476.3586,
      "absoluteEffectStartYear": -187272,
      "yearlyBreakdown": {
        "primary": {
          "2025": {
            "annualSavingsNominal": 0,
            "cumulativeSavings": 0,
            "annualAbatement": 0,
            "emissionFactor": 0.2113,
            "cumulativeSavingsNominal": 0,
            "activityDataMACBaseline2": 300000,
            "activityDataAfterAction2": 300000,
            "annualSavings": 0,
            "cumulativeAbatement": 0,
            "actionActivityDataImpact2": 0
          },
          "2030": {
            "annualSavingsNominal": 59620.3634,
            "cumulativeSavings": 231558.532,
            "annualAbatement": 41.9926,
            "emissionFactor": 0.2113,
            "cumulativeSavingsNominal": 231558.532,
            "activityDataMACBaseline2": 331224.241,
            "activityDataAfterAction2": 132489.6964,
            "annualSavings": 59620.3634,
            "cumulativeAbatement": 163.0944,
            "actionActivityDataImpact2": -198734.5446
          },
          "2040": {
            "annualSavingsNominal": 72676.8903,
            "cumulativeSavings": 897441.4037,
            "annualAbatement": 51.1888,
            "emissionFactor": 0.2113,
            "cumulativeSavingsNominal": 897441.4037,
            "activityDataMACBaseline2": 403760.5015,
            "activityDataAfterAction2": 161504.2006,
            "annualSavings": 72676.8903,
            "cumulativeAbatement": 632.0979,
            "actionActivityDataImpact2": -242256.3009
          },
          "2050": {
            "annualSavingsNominal": 88592.7237,
            "cumulativeSavings": 1709148.9088,
            "annualAbatement": 62.3988,
            "emissionFactor": 0.2113,
            "cumulativeSavingsNominal": 1709148.9088,
            "activityDataMACBaseline2": 492181.7983,
            "activityDataAfterAction2": 196872.7193,
            "annualSavings": 88592.7237,
            "cumulativeAbatement": 1203.8105,
            "actionActivityDataImpact2": -295309.079
          }
        },
        "balancing": {
          "2025": {
            "annualSavingsNominal": 0,
            "cumulativeSavings": 0,
            "annualAbatement": 0,
            "emissionFactor": 0.0579,
            "cumulativeSavingsNominal": 0,
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 0,
            "annualSavings": 0,
            "cumulativeAbatement": 0,
            "actionActivityDataImpact2": 0
          },
          "2030": {
            "annualSavingsNominal": -19873.4545,
            "cumulativeSavings": -77186.1773,
            "annualAbatement": -11.5147,
            "emissionFactor": 0.0579,
            "cumulativeSavingsNominal": -77186.1773,
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 198734.5446,
            "annualSavings": -19873.4545,
            "cumulativeAbatement": -44.7217,
            "actionActivityDataImpact2": 198734.5446
          },
          "2040": {
            "annualSavingsNominal": -24225.6301,
            "cumulativeSavings": -299147.1346,
            "annualAbatement": -14.0363,
            "emissionFactor": 0.0579,
            "cumulativeSavingsNominal": -299147.1346,
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 242256.3009,
            "annualSavings": -24225.6301,
            "cumulativeAbatement": -173.3258,
            "actionActivityDataImpact2": 242256.3009
          },
          "2050": {
            "annualSavingsNominal": -29530.9079,
            "cumulativeSavings": -569716.3029,
            "annualAbatement": -17.1102,
            "emissionFactor": 0.0579,
            "cumulativeSavingsNominal": -569716.3029,
            "activityDataMACBaseline2": 0,
            "activityDataAfterAction2": 295309.079,
            "annualSavings": -29530.9079,
            "cumulativeAbatement": -330.0936,
            "actionActivityDataImpact2": 295309.079
          }
        },
        "balancing2": null,
        "net": {
          "2025": {
            "annualCashFlow": 0,
            "annualSavingsNominal": 0,
            "cumulativeSavings": 0,
            "cumulativeCashFlowNominal": 0,
            "annualOpexNominal": 0,
            "annualAbatement": 0,
            "annualOpex": 0,
            "cumulativeCashFlow": 0,
            "cumulativeSavingsNominal": 0,
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "annualSavings": 0,
            "annualCashFlowNominal": 0,
            "cumulativeAbatement": 0,
            "actionActivityDataImpact2": null
          },
          "2030": {
            "annualCashFlow": 39746.9089,
            "annualSavingsNominal": 39746.9089,
            "cumulativeSavings": 154372.3547,
            "cumulativeCashFlowNominal": 34372.3547,
            "annualOpexNominal": 0,
            "annualAbatement": 30.4779,
            "annualOpex": 0,
            "cumulativeCashFlow": 34372.3547,
            "cumulativeSavingsNominal": 154372.3547,
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "annualSavings": 39746.9089,
            "annualCashFlowNominal": 39746.9089,
            "cumulativeAbatement": 118.3727,
            "actionActivityDataImpact2": null
          },
          "2040": {
            "annualCashFlow": 48451.2602,
            "annualSavingsNominal": 48451.2602,
            "cumulativeSavings": 598294.2692,
            "cumulativeCashFlowNominal": 478294.2692,
            "annualOpexNominal": 0,
            "annualAbatement": 37.1524,
            "annualOpex": 0,
            "cumulativeCashFlow": 478294.2692,
            "cumulativeSavingsNominal": 598294.2692,
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "annualSavings": 48451.2602,
            "annualCashFlowNominal": 48451.2602,
            "cumulativeAbatement": 458.772,
            "actionActivityDataImpact2": null
          },
          "2050": {
            "annualCashFlow": 59061.8158,
            "annualSavingsNominal": 59061.8158,
            "cumulativeSavings": 1139432.6058,
            "cumulativeCashFlowNominal": 1019432.6058,
            "annualOpexNominal": 0,
            "annualAbatement": 45.2886,
            "annualOpex": 0,
            "cumulativeCashFlow": 1019432.6058,
            "cumulativeSavingsNominal": 1139432.6058,
            "activityDataMACBaseline2": null,
            "activityDataAfterAction2": null,
            "annualSavings": 59061.8158,
            "annualCashFlowNominal": 59061.8158,
            "cumulativeAbatement": 873.7169,
            "actionActivityDataImpact2": null
          }
        },
        "wtt": null,
        "balancingWtt": null,
        "balancing2Wtt": null,
        "netWtt": null
      },
      "balancingImpactWtt": null,
      "balancing2ImpactWtt": null,
      "endyear": null,
      "totalAbatementTotal": 873.7169,
      "balancing2multiplier": 0,
      "balancingmultiplier": 1,
      "source": "",
      "balancingCostPerUnit": 0.1,
      "balancing2CostPerUnit": null,
      "nominal": {
        "annualSavingsStartYear": 37454.4,
        "paybackPeriod": 4,
        "marginalCost": -1166.7768,
        "annualisedMarginalCost": -1166.7768,
        "equivalentAnnualCost": -42476.3586
      },
      "nominalTotalOpex": 0,
      "description": "Replace 60% of diesel car km with battery electric cars",
      "balancing2ExpectedValuewithoutAction": null,
      "balancingAbsoluteEffectStartYear": 187272,
      "balancingExpectedValuewithoutAction": 0,
      "balancing2AbsoluteEffectStartYear": null,
      "balancing2Impact": 0,
      "presentValueCapitalCost": 120000,
      "balancingImpact": 10.8505,
      "startyear": 2027,
      "orgunitid": "orgunit_depot"
    },
    {
      "opexCost": 0,
      "balancing2CumulativeActivityImpact": null,
      "actionname": "LED lighting retrofit",
      "multiplier": -0.15,
      "balancingCumulativeActivityImpact": null,
      "netImpactTotal": -24.492,
      "presentValueTotalOpex": 0,
      "netImpact": -24.492,
      "expectedValuewithoutAction": 255000,
      "annualSavingsStartYear": 11475,
      "wttActivity": null,
      "marginalCost": -886.7394,
      "effectEndYear": 2050,
      "balancing2activity": "",
      "cumulativeActivityImpact": -1225158.9644,
      "balancingactivity": "",
      "ghgReductionWtt": null,
      "presentValueNetValue": 327547.6893,
      "totalAbatement": 369.3844,
      "presentValueTotalSavings": 367547.6893,
      "discountedTotalAbatement": 369.3844,
      "totalAbatementWtt": null,
      "balancing2WttActivity": null,
      "ghgReduction": -24.492,
      "balancingWttActivity": null,
      "annualisedMarginalCost": -886.7394,
      "activity": "act_depot_electricity",
      "paybackPeriod": 4,
      "actiontype": "Energy Efficiency",
      "nominalNetValue": 327547.6893,
      "lifespanYears": 25,
      "actionid": "action_led",
      "nominalTotalSavings": 367547.6893,
      "primaryCostPerUnit": 0.3,
      "nominalEquivalentAnnualCost": -13101.9076,
      "netImpactWtt": null,
      "capitalCost": 40000,
      "balancing2CumulativeActivityImpactByYear": null,
      "presentValueOpexStartYear": 0,
      "balancingCumulativeActivityImpactByYear": null,
      "equivalentAnnualCost": -13101.9076,
      "absoluteEffectStartYear": -38250,
      "balancingImpactWtt": null,
      "balancing2ImpactWtt": null,
      "endyear": null,
      "totalAbatementTotal": 369.3844,
      "balancing2multiplier": 0,
      "balancingmultiplier": 0,
      "source": "",
      "balancingCostPerUnit": null,
      "balancing2CostPerUnit": null,
      "nominal": {
        "annualSavingsStartYear": 11475,
        "paybackPeriod": 4,
        "marginalCost": -886.7394,
        "annualisedMarginalCost": -886.7394,
        "equivalentAnnualCost": -13101.9076
      },
      "nominalTotalOpex": 0,
      "description": "Cut depot electricity use by 15%",
      "balancing2ExpectedValuewithoutAction": null,
      "balancingAbsoluteEffectStartYear": null,
      "balancingExpectedValuewithoutAction": null,
      "balancing2AbsoluteEffectStartYear": null,
      "balancing2Impact": 0,
      "presentValueCapitalCost": 40000,
      "balancingImpact": 0,
      "startyear": 2026,
      "orgunitid": "orgunit_depot"
    },
    {
      "opexCost": 0,
      "balancing2CumulativeActivityImpact": null,
      "actionname": "Retire two backup generators",
      "multiplier": 0,
      "balancingCumulativeActivityImpact": null,
      "netImpactTotal": -17.5,
      "presentValueTotalOpex": 0,
      "netImpact": -17.5,
      "expectedValuewithoutAction": 848.9664,
      "annualSavingsStartYear": 15000,
      "wttActivity": null,
      "marginalCost": -827.4273,
      "effectEndYear": 2050,
      "balancing2activity": "",
      "cumulativeActivityImpact": -5768.9926,
      "balancingactivity": "",
      "ghgReductionWtt": null,
      "presentValueNetValue": 417674.4481,
      "totalAbatement": 504.7869,
      "presentValueTotalSavings": 432674.4481,
      "discountedTotalAbatement": 504.7869,
      "totalAbatementWtt": null,
      "balancing2WttActivity": null,
      "ghgReduction": -17.5,
      "balancingWttActivity": null,
      "annualisedMarginalCost": -827.4273,
      "activity": "act_depot_generator_diesel",
      "paybackPeriod": 1,
      "actiontype": "Energy Efficiency",
      "nominalNetValue": 417674.4481,
      "lifespanYears": 23,
      "actionid": "action_generators",
      "nominalTotalSavings": 432674.4481,
      "primaryCostPerUnit": 75,
      "nominalEquivalentAnnualCost": -18159.7586,
      "netImpactWtt": null,
      "capitalCost": 15000,
      "balancing2CumulativeActivityImpactByYear": null,
      "presentValueOpexStartYear": 0,
      "balancingCumulativeActivityImpactByYear": null,
      "equivalentAnnualCost": -18159.7586,
      "absoluteEffectStartYear": -200,
      "balancingImpactWtt": null,
      "balancing2ImpactWtt": null,
      "endyear": null,
      "totalAbatementTotal": 504.7869,
      "balancing2multiplier": 0,
      "balancingmultiplier": 0,
      "source": "",
      "balancingCostPerUnit": null,
      "balancing2CostPerUnit": null,
      "nominal": {
        "annualSavingsStartYear": 15000,
        "paybackPeriod": 1,
        "marginalCost": -827.4273,
        "annualisedMarginalCost": -827.4273,
        "equivalentAnnualCost": -18159.7586
      },
      "nominalTotalOpex": 0,
      "description": "Remove 200 GJ/yr of generator diesel",
      "balancing2ExpectedValuewithoutAction": null,
      "balancingAbsoluteEffectStartYear": null,
      "balancingExpectedValuewithoutAction": null,
      "balancing2AbsoluteEffectStartYear": null,
      "balancing2Impact": 0,
      "presentValueCapitalCost": 15000,
      "balancingImpact": 0,
      "startyear": 2028,
      "orgunitid": "orgunit_depot"
    }
  ],
  "methodology": {
    "organisation": {
      "title": "Viable Pathway Basis of Preparation",
      "content": "\n<h2 id=\"overview\">Overview</h2>\n<p>This statement records the assumptions used to prepare the greenhouse gas inventory and emission pathways for <strong>Harbourview Freight Co (fictional)</strong>. The projection covers 2025–2050.</p>\n<p>T… [truncated]"
    },
    "orgunit_depot": {
      "title": "Viable Pathway Basis of Preparation",
      "content": "\n<h2 id=\"overview\">Overview</h2>\n<p>This statement records the assumptions used to prepare the greenhouse gas inventory and emission pathways for <strong>Harbourview Freight Co (fictional)</strong>. The projection covers 2025–2050.</p>\n<p>T… [truncated]"
    }
  },
  "transitionPlan": {
    "includeAasbContent": true,
    "hasAnyTarget": true,
    "hasSBTiTarget": false,
    "hasUserDefinedTarget": true,
    "targetDescription": "a near-term per-scope target by 2030 and net-zero per-scope target by 2050",
    "userDefinedTargetTableHTML": "\n            <table class=\"table table-bordered table-sm\" style=\"max-width: 500px;\">\n                <thead>\n                    <tr>\n                        <th></th>\n                        <th>Year</th>\n                        <th>Scope … [truncated]",
    "neartermsbtitarget": null,
    "neartermsbtitargetyear": null,
    "pathwayAlignment": {
      "alignment": "none",
      "difference": 0,
      "percentage": 0
    },
    "sbtiCumulative": 0,
    "userDefinedCumulative": 4204.2,
    "projectionstartyear": 2025,
    "projectionendyear": 2050,
    "projectionstartyearemissions": 300.89,
    "desiredgrowth": 2,
    "userdefinedtargetbaseyear": 2024,
    "electricityapproach": "location",
    "bau2030": 332.2069,
    "bau2040": 404.9583,
    "bau2050": 493.6419,
    "baubaseyear": 140,
    "sbti2030": 0,
    "sbti2040": 0,
    "sbti2050": 0,
    "sbtipsy": 0,
    "int2030": 201.5463,
    "int2040": 186.8654,
    "int2050": 222.2795,
    "ext2030": 268.4003,
    "ext2040": 257.9803,
    "ext2050": 307.9961,
    "userdefinedtarget2030": 215.6,
    "userdefinedtarget2040": 123.2,
    "userdefinedtarget2050": 30.8,
    "userdefinedpsy": 292.6,
    "gap2030": 332.2069,
    "gap2040": 404.9583,
    "gap2050": 493.6419,
    "gap2030WithActions": 201.5463,
    "gap2040WithActions": 186.8654,
    "gap2050WithActions": 222.2795,
    "pathwayTableData": {
      "Business-as-Usual (BAU)": {
        "description": "Emissions without any mitigation actions",
        "data": {
          "2025": 300.89,
          "2030": 332.2069,
          "2040": 404.9583,
          "2050": 493.6419
        }
      },
      "External Activity Trends": {
        "description": "Emissions with external activity trends",
        "data": {
          "2025": 300.89,
          "2030": 268.4003,
          "2040": 257.9803,
          "2050": 307.9961
        }
      },
      "Internal Actions": {
        "description": "Emissions with internal mitigation actions",
        "data": {
          "2025": 300.89,
          "2030": 201.5463,
          "2040": 186.8654,
          "2050": 222.2795
        }
      },
      "Custom Target": {
        "description": "Customer target pathway",
        "data": {
          "2025": 292.6,
          "2030": 215.6,
          "2040": 123.2,
          "2050": 30.8
        }
      }
    },
    "historicEmissionsArray": [
      {
        "year": 2022,
        "totalEmissions": 150,
        "scope1": 150,
        "scope2": 0,
        "scope3": 0
      },
      {
        "year": 2023,
        "totalEmissions": 145,
        "scope1": 145,
        "scope2": 0,
        "scope3": 0
      },
      {
        "year": 2024,
        "totalEmissions": 140,
        "scope1": 140,
        "scope2": 0,
        "scope3": 0
      }
    ],
    "topInternalActions": [
      {
        "opexCost": 0,
        "balancing2CumulativeActivityImpact": null,
        "actionname": "Switch diesel fleet cars to EVs",
        "multiplier": -0.6,
        "balancingCumulativeActivityImpact": 5697163.0292,
        "netImpactTotal": -28.72,
        "presentValueTotalOpex": 0,
        "netImpact": -28.72,
        "expectedValuewithoutAction": 312120,
        "annualSavingsStartYear": 37454.4,
        "wttActivity": null,
        "marginalCost": -1166.7768,
        "effectEndYear": 2050,
        "balancing2activity": "",
        "cumulativeActivityImpact": -5697163.0292,
        "balancingactivity": "act_depot_car_bev",
        "ghgReductionWtt": null,
        "presentValueNetValue": 1019432.6058,
        "totalAbatement": 873.7169,
        "presentValueTotalSavings": 1139432.6058,
        "discountedTotalAbatement": 873.7169,
        "totalAbatementWtt": null,
        "balancing2WttActivity": null,
        "ghgReduction": -39.5706,
        "balancingWttActivity": null,
        "annualisedMarginalCost": -1166.7768,
        "activity": "act_depot_car_diesel",
        "paybackPeriod": 4,
        "actiontype": "Company Vehicles",
        "nominalNetValue": 1019432.6058,
        "lifespanYears": 24,
        "actionid": "action_fleet_ev",
        "nominalTotalSavings": 1139432.6058,
        "primaryCostPerUnit": 0.3,
        "nominalEquivalentAnnualCost": -42476.3586,
        "netImpactWtt": null,
        "capitalCost": 120000,
        "balancing2CumulativeActivityImpactByYear": null,
        "presentValueOpexStartYear": 0,
        "balancingCumulativeActivityImpactByYear": {
          "2025": 0,
          "2030": 771861.7734,
          "2040": 2991471.3458,
          "2050": 5697163.0292
        },
        "equivalentAnnualCost": -42476.3586,
        "absoluteEffectStartYear": -187272,
        "balancingImpactWtt": null,
        "balancing2ImpactWtt": null,
        "endyear": null,
        "totalAbatementTotal": 873.7169,
        "balancing2multiplier": 0,
        "balancingmultiplier": 1,
        "source": "",
        "balancingCostPerUnit": 0.1,
        "balancing2CostPerUnit": null,
        "nominal": {
          "annualSavingsStartYear": 37454.4,
          "paybackPeriod": 4,
          "marginalCost": -1166.7768,
          "annualisedMarginalCost": -1166.7768,
          "equivalentAnnualCost": -42476.3586
        },
        "nominalTotalOpex": 0,
        "description": "Replace 60% of diesel car km with battery electric cars",
        "balancing2ExpectedValuewithoutAction": null,
        "balancingAbsoluteEffectStartYear": 187272,
        "balancingExpectedValuewithoutAction": 0,
        "balancing2AbsoluteEffectStartYear": null,
        "balancing2Impact": 0,
        "presentValueCapitalCost": 120000,
        "balancingImpact": 10.8505,
        "startyear": 2027,
        "orgunitid": "orgunit_depot"
      }
    ],
    "topExternalTrends": [],
    "topEmissionFactorTrends": [
      {
        "emissionfactorname": "utilities_electricity_grid",
        "emissionfactortrendid": "1001",
        "activityuom": "kWh",
        "cumulativeImpactWithoutTrend": 5639.8767,
        "context": "Australia is committed to reducing GHG emissions to 43% below 2005 levels by 2030. A key contribution to this target is the expanded Capacity Investment Scheme to deliver on the government’s target to achieve 82% renewable electricity by 20… [truncated]",
        "activity": "act_depot_electricity",
        "cumulativeTrendImpact": -3009.8143,
        "emissionfactorid": "utilities_electricity_grid",
        "status": "2025-06-01T00:00:00Z",
        "projectionapproach": "Weighted projection based on pedigree quality assessments, normalised to 2024 emission factor",
        "source": "/emissionfactortrends/1001",
        "cumulativeImpactWithTrend": 2630.0624,
        "category": "utilities",
        "orgunitid": "orgunit_depot"
      }
    ],
    "globalPurchasedGoodsTrendTotal": 0,
    "ext2030Percent": 19.2069,
    "ext2050Percent": 37.6074,
    "int2030PercentAboveSBTi": 0,
    "int2050PercentAboveSBTi": 0,
    "totalCapitalCost": 175000,
    "hasActionsWithCosts": true,
    "cumulativeCapitalCostsByYear": {
      "2025": 0,
      "2030": 175000,
      "2040": 175000,
      "2050": 175000
    },
    "projectionyears": [
      2025,
      2030,
      2040,
      2050
    ],
    "perScopeTransitionSummary": {
      "1": {
        "baseYear": 2024,
        "baseYearEmissions": 140,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 140,
        "int2030": 87.0737,
        "int2040": 106.1424,
        "target2030": 98,
        "target2040": 56,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      },
      "2": {
        "baseYear": 2024,
        "baseYearEmissions": 168,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 168,
        "int2030": 114.4726,
        "int2040": 80.723,
        "target2030": 117.6,
        "target2040": 67.2,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      },
      "3": {
        "baseYear": 2024,
        "baseYearEmissions": 0,
        "latestHistoricYear": 2024,
        "latestHistoricEmissions": 0,
        "int2030": 0,
        "int2040": 0,
        "target2030": 0,
        "target2040": 0,
        "targetLabel": "custom target pathway",
        "hasTargetComparison": true,
        "custom2030": null,
        "custom2040": null,
        "hasCustomPerScopeForClause": false
      }
    },
    "aasbAssessment": {
      "status": "group",
      "groupId": 3,
      "groupLabel": "Group 3",
      "reportingStartDate": "2027-07-01",
      "assuranceRoadmap": [
        {
          "reporting_year": "Year 1 (FY27-28)",
          "scope": "Governance, Strategy, Scope 1 & 2 Emissions",
          "level": "Limited Assurance"
        },
        {
          "reporting_year": "Year 2 & 3 (FY28-30)",
          "scope": "Strategy, Scenario Analysis, Transition Plan, Risk Management, and Scope 3 Emissions",
          "level": "Limited Assurance"
        },
        {
          "reporting_year": "Year 4+ (FY30 onwards)",
          "scope": "All climate-related disclosures (Full Report)",
          "level": "Reasonable Assurance"
        }
      ],
      "timingNotes": [
        {
          "id": "classification_timing",
          "title": "Classification is assessed at period end",
          "text": "Your AASB classification isn't set at the start of your financial year. It's assessed at the end of your reporting period, based on revenue, assets or employees at that point. A merger, a split, or crossing a threshold mid-year can move you… [truncated]"
        },
        {
          "id": "lodgement_timing",
          "title": "Lodgement is after period end",
          "text": "Your report isn't due on your reporting period end date. If the period finishes 30 June, lodgement typically lands around September. Those are two separate dates."
        }
      ]
    },
    "reportingCurrency": "AUD",
    "externalTrendsPack": {
      "id": "2026Q3.1",
      "label": "2026 Q3.1",
      "publishedAt": "2026-08-31T00:00:00.000Z",
      "summary": "Small update: simplified version where related emission factors are used instead of a single emissionfactorname.",
      "status": "published",
      "isLatest": true,
      "latestId": "2026Q3.1"
    },
    "recLgcPpaData": null,
    "recLgcPpaByOrgUnit": {},
    "recPurchaseDisclosure": null,
    "htmlContent": {
      "introduction": "\n        <section>\n            <p>\n                The development of this transition plan is guided by the Australian Accounting Standards \n                Board (AASB) S2 Climate-related Financial Disclosures standard, which requires enti… [truncated]",
      "climateTarget": "<section><h2 id=\"climate-target\">Climate Target</h2><div class=\"mb-4\"><h3>AASB requirements</h3><p>Based on our revenue, assets and employees, we are a <strong>Group 3</strong> organisation. Our AASB S2 disclosures and assurance requirement… [truncated]",
      "keyFindings": "<section><h2 id=\"key-findings\">Key Findings</h2>\n        <p>\n            Our projection start year (2025) emissions totaled 301 tCO2e. \n            Under a business-as-usual scenario, assuming our revenue continues to grow at a constant rat… [truncated]",
      "pathwaysGraphIntro": "<section><h2 id=\"emissions-pathways\">Emissions Pathways</h2>\n            <p>\n                The following chart illustrates our projected emissions pathways under different scenarios:\n            </p>\n        </section>",
      "perScopePathwaysIntro": "\n        <section style=\"margin-top: 24px;\">\n            <h2 id=\"emissions-pathways-by-scope\">Emissions pathways by scope</h2>\n            <p>\n                The following charts show projected emissions for each GHG scope separately, usin… [truncated]",
      "perScopePathwayNarratives": {
        "1": "<p>For Scope 1, base year (2024) emissions were 140 tCO₂e. The latest historic reporting year shown is 2024, with 140 tCO₂e for this scope. At 2030, the internal-actions pathway is 87 tCO₂e, compared to the custom target pathway target of 9… [truncated]",
        "2": "<p>For Scope 2, base year (2024) emissions were 168 tCO₂e. The latest historic reporting year shown is 2024, with 168 tCO₂e for this scope. At 2030, the internal-actions pathway is 114 tCO₂e, compared to the custom target pathway target of … [truncated]",
        "3": "<p>For Scope 3, base year (2024) emissions were 0 tCO₂e. The latest historic reporting year shown is 2024, with 0 tCO₂e for this scope. At 2030, the internal-actions pathway is 0 tCO₂e, compared to the custom target pathway target of 0 tCO₂… [truncated]"
      },
      "pathwaysTableNote": "",
      "internalActionsIntro": "\n        <section>\n            <h2 id=\"key-internal-actions\">Key Internal Actions</h2>\n            <p>\n                Our transition plan includes several strategic internal actions designed to reduce \n                emissions across our … [truncated]",
      "internalActionsConclusion": "\n        <section>\n            <p>\n                These internal actions represent our primary levers for emissions reduction and \n                demonstrate our commitment to proactive climate action. The implementation of \n             … [truncated]",
      "recPurchaseDisclosure": "",
      "recLgcPpa": "",
      "recLgcPpaByOrgUnit": {},
      "costAssessment": "<section><h2 id=\"cost-assessment\">Cost Assessment</h2>\n            <p>\n                The implementation of all internal actions in our transition plan requires a total \n                capital investment of $175,000. This investment repre… [truncated]",
      "externalActivityTrendsIntro": "\n        <section>\n            <h2 id=\"key-external-activity-trends\">Key External Activity Trends</h2>\n            <p>External Trends dataset applied: <strong>2026 Q3.1</strong> (<code>2026Q3.1</code>).</p>\n            <p>\n                E… [truncated]",
      "externalActivityTrendsConclusion": "\n        <section>\n            <p>\n                These external trends generally have a positive impact on our emissions pathway, \n                reflecting the broader societal transition toward a low-carbon economy. While \n            … [truncated]",
      "emissionFactorTrendsIntro": "\n        <section>\n            <h2 id=\"key-emission-factor-trends\">Key Emission Factor Trends</h2>\n            <p>\n                Emission factor trends represent the projected changes in the carbon intensity \n                of various en… [truncated]",
      "emissionFactorTrendsConclusion": "\n        <section>\n            <p>\n                These emission factor trends represent significant opportunities for emissions \n                reduction through technological advancement and policy-driven decarbonisation. \n             … [truncated]",
      "historicEmissionsIntro": "\n        <section>\n            <h2 id=\"historic-emissions-overview\">Historic Emissions Overview</h2>\n            <p>\n                Our historic emissions data provides the baseline for understanding our\n                emissions trajector… [truncated]"
    }
  },
  "orgunitResults": [
    {
      "id": "orgunit_depot",
      "orgunitid": "orgunit_depot",
      "ghgBAUsumperyear": [
        300.89,
        332.2069,
        404.9583,
        493.6419
      ],
      "ghgEXTsumperyear": [
        300.89,
        268.4003,
        257.9803,
        307.9961
      ],
      "ghgEXTsumperyearMin": [
        300.89,
        308.6714,
        311.4955,
        371.8154
      ],
      "ghgEXTsumperyearMax": [
        300.89,
        233.2042,
        211.2092,
        252.2194
      ],
      "ghgINTsumperyear": [
        300.89,
        201.5463,
        186.8654,
        222.2795
      ],
      "ghgINTsumperyearMin": [
        300.89,
        235.7768,
        232.3533,
        276.5259
      ],
      "ghgINTsumperyearMax": [
        300.89,
        171.6296,
        147.11,
        174.8693
      ],
      "waterfallMultiYear": {
        "waterfall2030": {
          "totalGrowthContribution": 31.3169,
          "totalEXTContribution": -63.8066,
          "totalMeasuresContribution": -66.854,
          "targetvalue_sbti": null,
          "targetvalue_custom": 215.6,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 201.5463
        },
        "waterfall2040": {
          "totalGrowthContribution": 104.0683,
          "totalEXTContribution": -146.978,
          "totalMeasuresContribution": -71.1149,
          "targetvalue_sbti": null,
          "targetvalue_custom": 123.2,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 186.8654
        },
        "waterfall2050": {
          "totalGrowthContribution": 192.7519,
          "totalEXTContribution": -185.6458,
          "totalMeasuresContribution": -85.7166,
          "targetvalue_sbti": null,
          "targetvalue_custom": 30.8,
          "projectionstartyear": 2025,
          "projectionstartyearemissions": 300.89,
          "waterfallValue": 222.2795
        }
      },
      "sbtiPathwayValues": null,
      "internalActionsContributions": [
        {
          "opexCost": 0,
          "balancing2CumulativeActivityImpact": null,
          "actionname": "Switch diesel fleet cars to EVs",
          "multiplier": -0.6,
          "balancingCumulativeActivityImpact": 5697163.0292,
          "netImpactTotal": -28.72,
          "presentValueTotalOpex": 0,
          "netImpact": -28.72,
          "expectedValuewithoutAction": 312120,
          "annualSavingsStartYear": 37454.4,
          "wttActivity": null,
          "marginalCost": -1166.7768,
          "effectEndYear": 2050,
          "balancing2activity": "",
          "cumulativeActivityImpact": -5697163.0292,
          "balancingactivity": "act_depot_car_bev",
          "ghgReductionWtt": null,
          "presentValueNetValue": 1019432.6058,
          "totalAbatement": 873.7169,
          "presentValueTotalSavings": 1139432.6058,
          "discountedTotalAbatement": 873.7169,
          "totalAbatementWtt": null,
          "balancing2WttActivity": null,
          "ghgReduction": -39.5706,
          "balancingWttActivity": null,
          "annualisedMarginalCost": -1166.7768,
          "activity": "act_depot_car_diesel",
          "paybackPeriod": 4,
          "actiontype": "Company Vehicles",
          "nominalNetValue": 1019432.6058,
          "lifespanYears": 24,
          "actionid": "action_fleet_ev",
          "nominalTotalSavings": 1139432.6058,
          "primaryCostPerUnit": 0.3,
          "nominalEquivalentAnnualCost": -42476.3586,
          "netImpactWtt": null,
          "capitalCost": 120000,
          "balancing2CumulativeActivityImpactByYear": null,
          "presentValueOpexStartYear": 0,
          "balancingCumulativeActivityImpactByYear": {
            "2025": 0,
            "2030": 771861.7734,
            "2040": 2991471.3458,
            "2050": 5697163.0292
          },
          "equivalentAnnualCost": -42476.3586,
          "absoluteEffectStartYear": -187272,
          "balancingImpactWtt": null,
          "balancing2ImpactWtt": null,
          "endyear": null,
          "totalAbatementTotal": 873.7169,
          "balancing2multiplier": 0,
          "balancingmultiplier": 1,
          "source": "",
          "balancingCostPerUnit": 0.1,
          "balancing2CostPerUnit": null,
          "nominal": {
            "annualSavingsStartYear": 37454.4,
            "paybackPeriod": 4,
            "marginalCost": -1166.7768,
            "annualisedMarginalCost": -1166.7768,
            "equivalentAnnualCost": -42476.3586
          },
          "nominalTotalOpex": 0,
          "description": "Replace 60% of diesel car km with battery electric cars",
          "balancing2ExpectedValuewithoutAction": null,
          "balancingAbsoluteEffectStartYear": 187272,
          "balancingExpectedValuewithoutAction": 0,
          "balancing2AbsoluteEffectStartYear": null,
          "balancing2Impact": 0,
          "presentValueCapitalCost": 120000,
          "balancingImpact": 10.8505,
          "startyear": 2027
        }
      ]
    }
  ],
  "externalTrendsPack": {
    "publishedAt": "2026-08-31T00:00:00.000Z",
    "latestId": "2026Q3.1",
    "summary": "Small update: simplified version where related emission factors are used instead of a single emissionfactorname.",
    "isLatest": true,
    "status": "published",
    "label": "2026 Q3.1",
    "id": "2026Q3.1"
  }
}

Responses are trimmed for display: year series keep 2025, 2030, 2040 and 2050, numbers are rounded, and long text is cut. Download the files for the full trimmed versions.

5. Extended response changes

Only for calls with ?extended=true. Everything in section 4 applies too.

  • Top level: v1 returns 58 keys. v2 adds externalTrendsPack (and warnings when unpinned). Nothing is removed.
  • externalActivityTrendsContributions at the top level has one row per trend (activitytrendid), summed across org units. orgunitid is omitted, and activity / balancingactivity are null when they differ between units. Per-unit rows are still in orgunitResults[].externalActivityTrendsContributions. Trend items also gain savings fields.
  • maccByEndpoint slice items gain annualisedMarginalCost, cumulativeCashFlow, endyear, lifespanYears, marginalCost, nominal, opexCost, presentValueCapitalCost, presentValueOpexStartYear.
  • Contribution items add well-to-tank fields such as netImpactWtt and totalAbatementTotal. They stay null (or equal to the non-WTT value) unless FERA is on.
  • Balancing activities that trends insert automatically get generated ids such as act_… that change on every call (v1 used catalogue ids). Do not store them or join on them.
  • balancingCumulativeActivityImpactByYear includes zero-valued years before the action's startyear.
  • transitionPlan is only in the standard response, on both versions. If you need it, make a standard call as well.
  • Contribution activity strings are unchanged for v1-format requests. With the v2 format they echo your own instance ids.
Extended response differences between v1 and v2
Priority Change v1 v2
Essential Top-level externalActivityTrendsContributions is rolled up by activitytrendid Not backwards compatible One row per org unit per trend, with orgunitid, activity and balancingactivity One row per activitytrendid summed across org units/instances. orgunitid omitted and activity/balancingactivity null when they differ. Per-org-unit rows remain in orgunitResults[].externalActivityTrendsContributions
Recommended Extended top-level keys: only additions 58 keys (request-v1.json) Adds externalTrendsPack (and warnings when unpinned). No keys removed, no top-level type changes
Recommended maccByEndpoint slice items gain marginalCost, annualisedMarginalCost and present-value fields No marginalCost / annualisedMarginalCost in maccByEndpoint['2030'|'2040'|'2050'][] (contribution items do have marginalCost) Adds marginalCost, annualisedMarginalCost, presentValueCapitalCost, opexCost, presentValueOpexStartYear, nominal, cumulativeCashFlow, lifespanYears, endyear
Recommended Activities auto-inserted by trends get opaque ids minted per request Not backwards compatible Trend balancing targets use catalog ids (e.g. commuting_car_bev) Auto-inserted balancing rows get ids like act_1793572404682965236063616 that change on every call; listed in orgunitResults[].autoInsertedActivities
Optional transitionPlan is in standard responses only (unchanged) standard: present; extended: absent standard: present; extended: absent
Optional externalActivityTrendsContributions items gain savings fields No savings fields Adds cumulativePrimarySavings, cumulativeBalancingSavings, netCumulativeSavings, currency
response-extended-v1-excerpt.json JSON
{
  "_excerpt": "POST /api/calculate?extended=true with request-v1.json: top-level keys, one internalActionsContributions item and one maccByEndpoint[\"2030\"] item. Year series trimmed to 2025, 2030, 2040, 2050.",
  "topLevelKeys": [
    "activityMetadata",
    "autoInsertedActivities",
    "baseYearEmissionsPerScope",
    "bauScopeEmissions",
    "calculationWarnings",
    "emissionFactorTrendsContributions",
    "emissions2030EXT",
    "emissions2030INT",
    "emissions2040EXT",
    "emissions2040INT",
    "emissions2050EXT",
    "emissions2050INT",
    "extScopeEmissions",
    "extScopeEmissionsMax",
    "extScopeEmissionsMin",
    "externalActivityTrendsContributions",
    "ghgBAUsumperyear",
    "ghgEXTsumperyear",
    "ghgEXTsumperyearMax",
    "ghgEXTsumperyearMin",
    "ghgINTsumperyear",
    "ghgINTsumperyearMax",
    "ghgINTsumperyearMin",
    "historicemissions",
    "historicemissionsyears",
    "intScopeEmissions",
    "intScopeEmissionsMax",
    "intScopeEmissionsMin",
    "internalActionsContributions",
    "maccByEndpoint",
    "methodology",
    "missingEmissionFactors",
    "name",
    "neartermsbtitarget",
    "neartermsbtitargetyear",
    "orgUnits",
    "organisationid",
    "orgunitResults",
    "projectedBAUAD",
    "projectedEXTAD2",
    "projectedINTAD2",
    "projectionstartyearactivitydata",
    "projectionyears",
    "reportingCurrency",
    "sbtiPathwayAlternative",
    "sbtiPathwayByScope",
    "sbtiPathwayByScopeWithoutFLA",
    "sbtiPathwayValues",
    "sbtiversion",
    "showsbtialternative",
    "targetyears",
    "userDefinedPathwayAlternatives",
    "userDefinedPathwayByScope",
    "userDefinedPathwayValues",
    "userdefinedtarget",
    "userdefinedtargetalternatives",
    "userdefinedtargetbaseyear",
    "waterfallMultiYear"
  ],
  "internalActionsContributionsItem": {
    "actionname": "LED lighting retrofit",
    "multiplier": -0.15,
    "balancingCumulativeActivityImpact": null,
    "netImpact": -24.492,
    "expectedValuewithoutAction": 255000,
    "annualSavingsStartYear": 11475,
    "marginalCost": -886.7394,
    "cumulativeActivityImpact": -1225158.9644,
    "balancingactivity": "",
    "totalAbatement": 369.3844,
    "ghgReduction": -24.492,
    "activity": "utilities_electricity_grid@@au-nsw",
    "paybackPeriod": 3,
    "actiontype": "Energy Efficiency",
    "actionid": "action_led",
    "primaryCostPerUnit": 0.3,
    "capitalCost": 40000,
    "balancingCumulativeActivityImpactByYear": null,
    "absoluteEffectStartYear": -38250,
    "yearlyBreakdown": {
      "primary": {
        "2025": {
          "activityDataMACBaseline2": 250000,
          "activityDataAfterAction2": 250000,
          "actionActivityDataImpact2": 0,
          "annualSavings": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "cumulativeAbatement": 0
        },
        "2030": {
          "activityDataMACBaseline2": 276020.2008,
          "activityDataAfterAction2": 234617.1707,
          "actionActivityDataImpact2": -41403.0301,
          "annualSavings": 12420.909,
          "cumulativeSavings": 59716.3608,
          "annualAbatement": 18.169,
          "cumulativeAbatement": 109.7885
        },
        "2040": {
          "activityDataMACBaseline2": 336467.0846,
          "activityDataAfterAction2": 285997.0219,
          "actionActivityDataImpact2": -50470.0627,
          "annualSavings": 15141.0188,
          "cumulativeSavings": 198441.9591,
          "annualAbatement": 11.7682,
          "cumulativeAbatement": 246.8545
        },
        "2050": {
          "activityDataMACBaseline2": 410151.4986,
          "activityDataAfterAction2": 348628.7738,
          "actionActivityDataImpact2": -61522.7248,
          "annualSavings": 18456.8174,
          "cumulativeSavings": 367547.6893,
          "annualAbatement": 13.3734,
          "cumulativeAbatement": 369.3844
        }
      },
      "balancing": null,
      "net": {
        "2025": {
          "activityDataMACBaseline2": 250000,
          "activityDataAfterAction2": 250000,
          "actionActivityDataImpact2": 0,
          "annualSavings": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "cumulativeAbatement": 0
        },
        "2030": {
          "activityDataMACBaseline2": 276020.2008,
          "activityDataAfterAction2": 234617.1707,
          "actionActivityDataImpact2": -41403.0301,
          "annualSavings": 12420.909,
          "cumulativeSavings": 59716.3608,
          "annualAbatement": 18.169,
          "cumulativeAbatement": 109.7885
        },
        "2040": {
          "activityDataMACBaseline2": 336467.0846,
          "activityDataAfterAction2": 285997.0219,
          "actionActivityDataImpact2": -50470.0627,
          "annualSavings": 15141.0188,
          "cumulativeSavings": 198441.9591,
          "annualAbatement": 11.7682,
          "cumulativeAbatement": 246.8545
        },
        "2050": {
          "activityDataMACBaseline2": 410151.4986,
          "activityDataAfterAction2": 348628.7738,
          "actionActivityDataImpact2": -61522.7248,
          "annualSavings": 18456.8174,
          "cumulativeSavings": 367547.6893,
          "annualAbatement": 13.3734,
          "cumulativeAbatement": 369.3844
        }
      }
    },
    "balancingmultiplier": 0,
    "source": "",
    "balancingCostPerUnit": null,
    "description": "Cut depot electricity use by 15%",
    "balancingAbsoluteEffectStartYear": null,
    "balancingExpectedValuewithoutAction": null,
    "balancingImpact": 0,
    "startyear": 2026,
    "orgunitid": "orgunit_depot"
  },
  "maccByEndpointSliceItem": {
    "actionid": "action_led",
    "actiontype": "Energy Efficiency",
    "actionname": "LED lighting retrofit",
    "activity": "utilities_electricity_grid@@au-nsw",
    "balancingactivity": "",
    "startyear": 2026,
    "description": "Cut depot electricity use by 15%",
    "source": "",
    "orgunitid": "orgunit_depot",
    "capitalCost": 40000,
    "paybackPeriod": 3,
    "cumulativeAbatement": 109.7885,
    "cumulativeSavings": 59716.3608,
    "cumulativeActivityImpact": -41403.0301,
    "balancingCumulativeActivityImpact": null,
    "ghgReduction": -24.492,
    "balancingImpact": 0,
    "netImpact": -24.492,
    "totalAbatement": 369.3844,
    "primaryCostPerUnit": 0.3,
    "balancingCostPerUnit": null,
    "absoluteEffectStartYear": -38250,
    "balancingAbsoluteEffectStartYear": null,
    "yearlyBreakdown": {
      "primary": {
        "2025": {
          "activityDataMACBaseline2": 250000,
          "activityDataAfterAction2": 250000,
          "actionActivityDataImpact2": 0,
          "annualSavings": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "cumulativeAbatement": 0
        },
        "2030": {
          "activityDataMACBaseline2": 276020.2008,
          "activityDataAfterAction2": 234617.1707,
          "actionActivityDataImpact2": -41403.0301,
          "annualSavings": 12420.909,
          "cumulativeSavings": 59716.3608,
          "annualAbatement": 18.169,
          "cumulativeAbatement": 109.7885
        },
        "2040": {
          "activityDataMACBaseline2": 336467.0846,
          "activityDataAfterAction2": 285997.0219,
          "actionActivityDataImpact2": -50470.0627,
          "annualSavings": 15141.0188,
          "cumulativeSavings": 198441.9591,
          "annualAbatement": 11.7682,
          "cumulativeAbatement": 246.8545
        },
        "2050": {
          "activityDataMACBaseline2": 410151.4986,
          "activityDataAfterAction2": 348628.7738,
          "actionActivityDataImpact2": -61522.7248,
          "annualSavings": 18456.8174,
          "cumulativeSavings": 367547.6893,
          "annualAbatement": 13.3734,
          "cumulativeAbatement": 369.3844
        }
      },
      "balancing": null,
      "net": {
        "2025": {
          "activityDataMACBaseline2": 250000,
          "activityDataAfterAction2": 250000,
          "actionActivityDataImpact2": 0,
          "annualSavings": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "cumulativeAbatement": 0
        },
        "2030": {
          "activityDataMACBaseline2": 276020.2008,
          "activityDataAfterAction2": 234617.1707,
          "actionActivityDataImpact2": -41403.0301,
          "annualSavings": 12420.909,
          "cumulativeSavings": 59716.3608,
          "annualAbatement": 18.169,
          "cumulativeAbatement": 109.7885
        },
        "2040": {
          "activityDataMACBaseline2": 336467.0846,
          "activityDataAfterAction2": 285997.0219,
          "actionActivityDataImpact2": -50470.0627,
          "annualSavings": 15141.0188,
          "cumulativeSavings": 198441.9591,
          "annualAbatement": 11.7682,
          "cumulativeAbatement": 246.8545
        },
        "2050": {
          "activityDataMACBaseline2": 410151.4986,
          "activityDataAfterAction2": 348628.7738,
          "actionActivityDataImpact2": -61522.7248,
          "annualSavings": 18456.8174,
          "cumulativeSavings": 367547.6893,
          "annualAbatement": 13.3734,
          "cumulativeAbatement": 369.3844
        }
      }
    }
  }
}
response-extended-v2-excerpt.json JSON
{
  "_excerpt": "POST /api/v2/calculate?extended=true with request-v2.json: top-level keys, one internalActionsContributions item and one maccByEndpoint[\"2030\"] item. Year series trimmed to 2025, 2030, 2040, 2050.",
  "topLevelKeys": [
    "activityMetadata",
    "autoInsertedActivities",
    "baseYearEmissionsPerScope",
    "bauScopeEmissions",
    "calculationWarnings",
    "emissionFactorTrendsContributions",
    "emissions2030EXT",
    "emissions2030INT",
    "emissions2040EXT",
    "emissions2040INT",
    "emissions2050EXT",
    "emissions2050INT",
    "extScopeEmissions",
    "extScopeEmissionsMax",
    "extScopeEmissionsMin",
    "externalActivityTrendsContributions",
    "externalTrendsPack",
    "ghgBAUsumperyear",
    "ghgEXTsumperyear",
    "ghgEXTsumperyearMax",
    "ghgEXTsumperyearMin",
    "ghgINTsumperyear",
    "ghgINTsumperyearMax",
    "ghgINTsumperyearMin",
    "historicemissions",
    "historicemissionsyears",
    "intScopeEmissions",
    "intScopeEmissionsMax",
    "intScopeEmissionsMin",
    "internalActionsContributions",
    "maccByEndpoint",
    "methodology",
    "missingEmissionFactors",
    "name",
    "neartermsbtitarget",
    "neartermsbtitargetyear",
    "orgUnits",
    "organisationid",
    "orgunitResults",
    "projectedBAUAD",
    "projectedEXTAD2",
    "projectedINTAD2",
    "projectionstartyearactivitydata",
    "projectionyears",
    "reportingCurrency",
    "sbtiPathwayAlternative",
    "sbtiPathwayByScope",
    "sbtiPathwayByScopeWithoutFLA",
    "sbtiPathwayValues",
    "sbtiversion",
    "showsbtialternative",
    "targetyears",
    "userDefinedPathwayAlternatives",
    "userDefinedPathwayByScope",
    "userDefinedPathwayValues",
    "userdefinedtarget",
    "userdefinedtargetalternatives",
    "userdefinedtargetbaseyear",
    "waterfallMultiYear"
  ],
  "internalActionsContributionsItem": {
    "opexCost": 0,
    "balancing2CumulativeActivityImpact": null,
    "actionname": "Switch diesel fleet cars to EVs",
    "multiplier": -0.6,
    "balancingCumulativeActivityImpact": 5697163.0292,
    "netImpactTotal": -28.72,
    "presentValueTotalOpex": 0,
    "netImpact": -28.72,
    "expectedValuewithoutAction": 312120,
    "annualSavingsStartYear": 37454.4,
    "wttActivity": null,
    "marginalCost": -1166.7768,
    "effectEndYear": 2050,
    "balancing2activity": "",
    "cumulativeActivityImpact": -5697163.0292,
    "balancingactivity": "act_depot_car_bev",
    "ghgReductionWtt": null,
    "presentValueNetValue": 1019432.6058,
    "totalAbatement": 873.7169,
    "presentValueTotalSavings": 1139432.6058,
    "discountedTotalAbatement": 873.7169,
    "totalAbatementWtt": null,
    "balancing2WttActivity": null,
    "ghgReduction": -39.5706,
    "balancingWttActivity": null,
    "annualisedMarginalCost": -1166.7768,
    "activity": "act_depot_car_diesel",
    "paybackPeriod": 4,
    "actiontype": "Company Vehicles",
    "nominalNetValue": 1019432.6058,
    "lifespanYears": 24,
    "actionid": "action_fleet_ev",
    "nominalTotalSavings": 1139432.6058,
    "primaryCostPerUnit": 0.3,
    "nominalEquivalentAnnualCost": -42476.3586,
    "netImpactWtt": null,
    "capitalCost": 120000,
    "balancing2CumulativeActivityImpactByYear": null,
    "presentValueOpexStartYear": 0,
    "balancingCumulativeActivityImpactByYear": {
      "2025": 0,
      "2030": 771861.7734,
      "2040": 2991471.3458,
      "2050": 5697163.0292
    },
    "equivalentAnnualCost": -42476.3586,
    "absoluteEffectStartYear": -187272,
    "yearlyBreakdown": {
      "primary": {
        "2025": {
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": 300000,
          "activityDataAfterAction2": 300000,
          "annualSavings": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": 0
        },
        "2030": {
          "annualSavingsNominal": 59620.3634,
          "cumulativeSavings": 231558.532,
          "annualAbatement": 41.9926,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 231558.532,
          "activityDataMACBaseline2": 331224.241,
          "activityDataAfterAction2": 132489.6964,
          "annualSavings": 59620.3634,
          "cumulativeAbatement": 163.0944,
          "actionActivityDataImpact2": -198734.5446
        },
        "2040": {
          "annualSavingsNominal": 72676.8903,
          "cumulativeSavings": 897441.4037,
          "annualAbatement": 51.1888,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 897441.4037,
          "activityDataMACBaseline2": 403760.5015,
          "activityDataAfterAction2": 161504.2006,
          "annualSavings": 72676.8903,
          "cumulativeAbatement": 632.0979,
          "actionActivityDataImpact2": -242256.3009
        },
        "2050": {
          "annualSavingsNominal": 88592.7237,
          "cumulativeSavings": 1709148.9088,
          "annualAbatement": 62.3988,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 1709148.9088,
          "activityDataMACBaseline2": 492181.7983,
          "activityDataAfterAction2": 196872.7193,
          "annualSavings": 88592.7237,
          "cumulativeAbatement": 1203.8105,
          "actionActivityDataImpact2": -295309.079
        }
      },
      "balancing": {
        "2025": {
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 0,
          "annualSavings": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": 0
        },
        "2030": {
          "annualSavingsNominal": -19873.4545,
          "cumulativeSavings": -77186.1773,
          "annualAbatement": -11.5147,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -77186.1773,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 198734.5446,
          "annualSavings": -19873.4545,
          "cumulativeAbatement": -44.7217,
          "actionActivityDataImpact2": 198734.5446
        },
        "2040": {
          "annualSavingsNominal": -24225.6301,
          "cumulativeSavings": -299147.1346,
          "annualAbatement": -14.0363,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -299147.1346,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 242256.3009,
          "annualSavings": -24225.6301,
          "cumulativeAbatement": -173.3258,
          "actionActivityDataImpact2": 242256.3009
        },
        "2050": {
          "annualSavingsNominal": -29530.9079,
          "cumulativeSavings": -569716.3029,
          "annualAbatement": -17.1102,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -569716.3029,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 295309.079,
          "annualSavings": -29530.9079,
          "cumulativeAbatement": -330.0936,
          "actionActivityDataImpact2": 295309.079
        }
      },
      "balancing2": null,
      "net": {
        "2025": {
          "annualCashFlow": 0,
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "cumulativeCashFlowNominal": 0,
          "annualOpexNominal": 0,
          "annualAbatement": 0,
          "annualOpex": 0,
          "cumulativeCashFlow": 0,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 0,
          "annualCashFlowNominal": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": null
        },
        "2030": {
          "annualCashFlow": 39746.9089,
          "annualSavingsNominal": 39746.9089,
          "cumulativeSavings": 154372.3547,
          "cumulativeCashFlowNominal": 34372.3547,
          "annualOpexNominal": 0,
          "annualAbatement": 30.4779,
          "annualOpex": 0,
          "cumulativeCashFlow": 34372.3547,
          "cumulativeSavingsNominal": 154372.3547,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 39746.9089,
          "annualCashFlowNominal": 39746.9089,
          "cumulativeAbatement": 118.3727,
          "actionActivityDataImpact2": null
        },
        "2040": {
          "annualCashFlow": 48451.2602,
          "annualSavingsNominal": 48451.2602,
          "cumulativeSavings": 598294.2692,
          "cumulativeCashFlowNominal": 478294.2692,
          "annualOpexNominal": 0,
          "annualAbatement": 37.1524,
          "annualOpex": 0,
          "cumulativeCashFlow": 478294.2692,
          "cumulativeSavingsNominal": 598294.2692,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 48451.2602,
          "annualCashFlowNominal": 48451.2602,
          "cumulativeAbatement": 458.772,
          "actionActivityDataImpact2": null
        },
        "2050": {
          "annualCashFlow": 59061.8158,
          "annualSavingsNominal": 59061.8158,
          "cumulativeSavings": 1139432.6058,
          "cumulativeCashFlowNominal": 1019432.6058,
          "annualOpexNominal": 0,
          "annualAbatement": 45.2886,
          "annualOpex": 0,
          "cumulativeCashFlow": 1019432.6058,
          "cumulativeSavingsNominal": 1139432.6058,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 59061.8158,
          "annualCashFlowNominal": 59061.8158,
          "cumulativeAbatement": 873.7169,
          "actionActivityDataImpact2": null
        }
      },
      "wtt": null,
      "balancingWtt": null,
      "balancing2Wtt": null,
      "netWtt": null
    },
    "balancingImpactWtt": null,
    "balancing2ImpactWtt": null,
    "endyear": null,
    "totalAbatementTotal": 873.7169,
    "balancing2multiplier": 0,
    "balancingmultiplier": 1,
    "source": "",
    "balancingCostPerUnit": 0.1,
    "balancing2CostPerUnit": null,
    "nominal": {
      "annualSavingsStartYear": 37454.4,
      "paybackPeriod": 4,
      "marginalCost": -1166.7768,
      "annualisedMarginalCost": -1166.7768,
      "equivalentAnnualCost": -42476.3586
    },
    "nominalTotalOpex": 0,
    "description": "Replace 60% of diesel car km with battery electric cars",
    "balancing2ExpectedValuewithoutAction": null,
    "balancingAbsoluteEffectStartYear": 187272,
    "balancingExpectedValuewithoutAction": 0,
    "balancing2AbsoluteEffectStartYear": null,
    "balancing2Impact": 0,
    "presentValueCapitalCost": 120000,
    "balancingImpact": 10.8505,
    "startyear": 2027,
    "orgunitid": "orgunit_depot"
  },
  "maccByEndpointSliceItem": {
    "actionid": "action_fleet_ev",
    "actiontype": "Company Vehicles",
    "actionname": "Switch diesel fleet cars to EVs",
    "activity": "act_depot_car_diesel",
    "balancingactivity": "act_depot_car_bev",
    "startyear": 2027,
    "description": "Replace 60% of diesel car km with battery electric cars",
    "source": "",
    "orgunitid": "orgunit_depot",
    "capitalCost": 120000,
    "presentValueCapitalCost": 120000,
    "opexCost": 0,
    "presentValueOpexStartYear": 0,
    "paybackPeriod": 4,
    "nominal": {
      "annualSavingsStartYear": 37454.4,
      "paybackPeriod": 4,
      "marginalCost": -1166.7768,
      "annualisedMarginalCost": -1166.7768,
      "equivalentAnnualCost": -42476.3586
    },
    "cumulativeAbatement": 118.3727,
    "cumulativeSavings": 154372.3547,
    "cumulativeCashFlow": 34372.3547,
    "cumulativeActivityImpact": 0,
    "balancingCumulativeActivityImpact": 198734.5446,
    "ghgReduction": -39.5706,
    "balancingImpact": 10.8505,
    "netImpact": -28.72,
    "totalAbatement": 873.7169,
    "marginalCost": -1166.7768,
    "annualisedMarginalCost": -1166.7768,
    "lifespanYears": 24,
    "endyear": null,
    "primaryCostPerUnit": 0.3,
    "balancingCostPerUnit": 0.1,
    "absoluteEffectStartYear": -187272,
    "balancingAbsoluteEffectStartYear": 187272,
    "yearlyBreakdown": {
      "primary": {
        "2025": {
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": 300000,
          "activityDataAfterAction2": 300000,
          "annualSavings": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": 0
        },
        "2030": {
          "annualSavingsNominal": 59620.3634,
          "cumulativeSavings": 231558.532,
          "annualAbatement": 41.9926,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 231558.532,
          "activityDataMACBaseline2": 331224.241,
          "activityDataAfterAction2": 132489.6964,
          "annualSavings": 59620.3634,
          "cumulativeAbatement": 163.0944,
          "actionActivityDataImpact2": -198734.5446
        },
        "2040": {
          "annualSavingsNominal": 72676.8903,
          "cumulativeSavings": 897441.4037,
          "annualAbatement": 51.1888,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 897441.4037,
          "activityDataMACBaseline2": 403760.5015,
          "activityDataAfterAction2": 161504.2006,
          "annualSavings": 72676.8903,
          "cumulativeAbatement": 632.0979,
          "actionActivityDataImpact2": -242256.3009
        },
        "2050": {
          "annualSavingsNominal": 88592.7237,
          "cumulativeSavings": 1709148.9088,
          "annualAbatement": 62.3988,
          "emissionFactor": 0.2113,
          "cumulativeSavingsNominal": 1709148.9088,
          "activityDataMACBaseline2": 492181.7983,
          "activityDataAfterAction2": 196872.7193,
          "annualSavings": 88592.7237,
          "cumulativeAbatement": 1203.8105,
          "actionActivityDataImpact2": -295309.079
        }
      },
      "balancing": {
        "2025": {
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "annualAbatement": 0,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 0,
          "annualSavings": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": 0
        },
        "2030": {
          "annualSavingsNominal": -19873.4545,
          "cumulativeSavings": -77186.1773,
          "annualAbatement": -11.5147,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -77186.1773,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 198734.5446,
          "annualSavings": -19873.4545,
          "cumulativeAbatement": -44.7217,
          "actionActivityDataImpact2": 198734.5446
        },
        "2040": {
          "annualSavingsNominal": -24225.6301,
          "cumulativeSavings": -299147.1346,
          "annualAbatement": -14.0363,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -299147.1346,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 242256.3009,
          "annualSavings": -24225.6301,
          "cumulativeAbatement": -173.3258,
          "actionActivityDataImpact2": 242256.3009
        },
        "2050": {
          "annualSavingsNominal": -29530.9079,
          "cumulativeSavings": -569716.3029,
          "annualAbatement": -17.1102,
          "emissionFactor": 0.0579,
          "cumulativeSavingsNominal": -569716.3029,
          "activityDataMACBaseline2": 0,
          "activityDataAfterAction2": 295309.079,
          "annualSavings": -29530.9079,
          "cumulativeAbatement": -330.0936,
          "actionActivityDataImpact2": 295309.079
        }
      },
      "balancing2": null,
      "net": {
        "2025": {
          "annualCashFlow": 0,
          "annualSavingsNominal": 0,
          "cumulativeSavings": 0,
          "cumulativeCashFlowNominal": 0,
          "annualOpexNominal": 0,
          "annualAbatement": 0,
          "annualOpex": 0,
          "cumulativeCashFlow": 0,
          "cumulativeSavingsNominal": 0,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 0,
          "annualCashFlowNominal": 0,
          "cumulativeAbatement": 0,
          "actionActivityDataImpact2": null
        },
        "2030": {
          "annualCashFlow": 39746.9089,
          "annualSavingsNominal": 39746.9089,
          "cumulativeSavings": 154372.3547,
          "cumulativeCashFlowNominal": 34372.3547,
          "annualOpexNominal": 0,
          "annualAbatement": 30.4779,
          "annualOpex": 0,
          "cumulativeCashFlow": 34372.3547,
          "cumulativeSavingsNominal": 154372.3547,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 39746.9089,
          "annualCashFlowNominal": 39746.9089,
          "cumulativeAbatement": 118.3727,
          "actionActivityDataImpact2": null
        },
        "2040": {
          "annualCashFlow": 48451.2602,
          "annualSavingsNominal": 48451.2602,
          "cumulativeSavings": 598294.2692,
          "cumulativeCashFlowNominal": 478294.2692,
          "annualOpexNominal": 0,
          "annualAbatement": 37.1524,
          "annualOpex": 0,
          "cumulativeCashFlow": 478294.2692,
          "cumulativeSavingsNominal": 598294.2692,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 48451.2602,
          "annualCashFlowNominal": 48451.2602,
          "cumulativeAbatement": 458.772,
          "actionActivityDataImpact2": null
        },
        "2050": {
          "annualCashFlow": 59061.8158,
          "annualSavingsNominal": 59061.8158,
          "cumulativeSavings": 1139432.6058,
          "cumulativeCashFlowNominal": 1019432.6058,
          "annualOpexNominal": 0,
          "annualAbatement": 45.2886,
          "annualOpex": 0,
          "cumulativeCashFlow": 1019432.6058,
          "cumulativeSavingsNominal": 1139432.6058,
          "activityDataMACBaseline2": null,
          "activityDataAfterAction2": null,
          "annualSavings": 59061.8158,
          "annualCashFlowNominal": 59061.8158,
          "cumulativeAbatement": 873.7169,
          "actionActivityDataImpact2": null
        }
      },
      "wtt": null,
      "balancingWtt": null,
      "balancing2Wtt": null,
      "netWtt": null
    }
  }
}

Excerpts: the list of top-level keys, one internal-action contribution and one maccByEndpoint["2030"] item from each version.

6. Why the numbers change

The same organisation gives different results on v2. Plan to re-baseline any figures you have published or stored, and tell your users why they moved.

Organisation totals on v1 and v2 for the example organisation
Pathway Year v1 (tCO₂e) v2 (tCO₂e) Change
Business as usual (BAU) 2030 332.2 332.2 No change
2050 493.6 493.6 No change
With external trends (EXT) 2030 268.4 268.4 No change
2050 308.0 308.0 No change
With your internal actions (INT) 2030 202.3 201.5 −0.8 (−0.4%)
2050 231.8 222.3 −9.5 (−4.1%)

Organisation totals from response-standard-v1.json and response-standard-v2.json (the example organisation above, v2 on pack 2026Q3.1). Business as usual is the same on both versions, as expected. In this example the INT pathway moved. Your own organisation can move more or less, depending on which trends and actions apply.

What causes the difference

  • Essential v2 reads market and grid trends from versioned External Trends packs. They are newer than the trends frozen into v1, so EXT and INT can move.
  • Essential Actions written as a fixed quantity (absolutechange) now grow with your organisation by default. Set absoluteChangeGrows: false on an action to keep the v1 result.
  • Recommended Business-as-usual (BAU) uses only your inventory and growth rate. That logic did not change, so BAU is the same on v1 and v2.
  • Recommended Scope 3.3 well-to-tank (FERA) is still off by default on both versions, so it does not explain any difference. Opting in with meta.includeFERA: true on v2 raises reported totals.
  • Optional A fix for fixed-quantity actions that move activity to a balancing activity with its own growth rate. The effect is usually small.

Example: “Retire two backup generators” removes a fixed 200 GJ a year (absolutechange: -200). Its total abatement is 402.5 tCO₂e on v1 and 504.8 tCO₂e on v2, because v2 grows the change with the organisation. Add "absoluteChangeGrows": false to the action to keep the v1 result.

7. Step by step for developers

Do the steps in order. Steps 1–4 and 7 apply to everyone. Step 5 is for extended users. Step 6 is optional and must come after step 1.

Switch endpoints to /v2 and keep your payload

Essential Standard + extended

Insert /v2 after /api on every calculate, scenario analysis and methodology call. Keep the same body, key and query string.

  • https://app.viablepathway.net/api/calculate?savePayload=false → https://app.viablepathway.net/api/v2/calculate?savePayload=false
  • Extended users keep &extended=true.
  • Do not change the request format yet (see the warning in section 3).
curl-v2-calculate.sh bash
#!/usr/bin/env bash
# Calculation API v2: same key, same body, /v2 inserted after /api.
# Replace YOUR_API_KEY with the key issued after approval.
# savePayload=false keeps API calls compute-only (do not persist org input).
# Add &extended=true to the query string if you use the extended response.

curl -sS -X POST \
  "https://app.viablepathway.net/api/v2/calculate?savePayload=false" \
  -H "Content-Type: application/json" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -d @request-v1.json

Make your response parsing tolerant

Essential Standard + extended
  • Ignore unknown keys at the top level and inside array items. If you use generated models or strict schemas, allow additional properties.
  • Expect externalTrendsPack and, when you do not pin a pack, warnings.
  • Look up contributions by actionid, not by position.
  • Relabel paybackPeriod as discounted, or read nominal.paybackPeriod for the undiscounted figure.
  • Error bodies keep error and message; v2 also includes path.

Pin the External Trends pack

Recommended Standard + extended

Without a pin, v2 uses the latest pack and adds a warning. With a pin, results stay the same until you choose to move to a newer pack.

Add to your request body JSON
"meta": {
  "externalTrendsVersion": "2026Q3.1"
}
  • A v1-format body can use meta.externalTrendsVersion or a root externalTrendsVersion field.
  • The response's externalTrendsPack.id echoes the pack used, and warnings disappears.
  • An unknown version returns HTTP 400 with latestId and availableIds. List packs with GET /api/data/externalTrendsVersions.
  • The conversion helper (/api/migrate-payload) does not add a pin for you.

Run v1 and v2 side by side and re-baseline

Essential Standard + extended
  1. Send the same payloads to both versions — the comparison notebook does this for you.
  2. Check that BAU matches. If it does not, check the request first.
  3. Review EXT and INT changes against the causes in section 6.
  4. For actions with absolutechange, decide whether the change should grow with the organisation. Set "absoluteChangeGrows": false to keep v1 behaviour.
  5. If you send disabledExternalTrends, re-check every id. Trend ids were renumbered (for example 102 and 131 were removed, 1021 and 1022 were added, and 103 now means vehicle rental, not natural gas), so an old list can switch off the wrong trend.
  6. Leave meta.includeFERA off to compare like for like. Turning it on adds Scope 3.3 emissions and raises totals.
  7. Store the new baseline and tell your users the figures were updated.

Update MAC and trend-contribution handling

Essential Extended only
  • Read per-org-unit trend rows from orgunitResults[].externalActivityTrendsContributions. The top-level list is now one row per activitytrendid.
  • Use the new maccByEndpoint fields (marginalCost, annualisedMarginalCost, present-value fields) instead of joining back to contributions.
  • Do not store or key on ids of auto-inserted balancing activities; they change on every call.
  • Allow zero-valued years before startyear in balancingCumulativeActivityImpactByYear.
  • If you need transitionPlan, make a standard call too.

Adopt the v2 request format

Optional Standard + extended

Only after step 1. POST /api/migrate-payload converts a v1 body to the v2 format and returns it. It does not calculate or save anything.

curl-migrate-payload.sh bash
#!/usr/bin/env bash
# Convert a v1-shaped payload to the v2 shape (meta / target + flat activitydata).
# Returns the converted payload only: nothing is calculated or saved.
# Replace YOUR_API_KEY with the key issued after approval.
# Send the result to /api/v2/calculate only, never to the v1 URL.

curl -sS -X POST \
  "https://app.viablepathway.net/api/migrate-payload" \
  -H "Content-Type: application/json" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -d @request-v1.json \
  -o request-v2-migrated.json
  • Organisation settings move into meta and target settings into target. If both nested and root values are present, nested wins.
  • Converted rows get ids like companyvehicle_car_diesel@@au-nsw, so existing action references keep working. New rows can use any id, for example act_warehouse_electricity.
  • Each row needs datastructureversion: 2 on the org unit, catalogactivityid, activityname and emissionfactorid (replaces emissionfactorname). emissionfactortrendid and activitytrendid are optional; set "" to opt out of a trend.
  • Add meta.externalTrendsVersion yourself (step 3).
  • New optional settings: enabled, endyear, endafter, absoluteChangeGrows on actions; macmethod, macvaluation, discountrate, includeFERA in meta.
  • Your existing API key works on /api/migrate-payload. It only converts the body; nothing is calculated or stored.

Go live and monitor warnings

Recommended Standard + extended
  • Switch production traffic to the v2 addresses once the checklist below is done.
  • Log the warnings array and externalTrendsPack.id on every call. A warning means a request is not pinned.
  • Allow slightly longer client timeouts: v2 returns more data.
  • Keep v1 calls available for rollback while you validate. v1 stays frozen.

8. Go-live checklist

Tick through before switching production traffic. The boxes are for your own use and are not saved.

Everyone (standard and extended)

Extended users (?extended=true) — also

9. Try it

Compare v1 and v2 on your own payloads before you switch.

Comparison notebook (Jupyter / Colab)

Sends the same payload to v1 and v2 and charts the difference. The download has no key in it: set API_KEY in the first code cell (or the VIABLE_API_KEY environment variable). Existing customers can ask us for a copy with their key already filled in. Keep any copy that contains a key private: do not commit it, share it publicly, or paste it into a support ticket.

Download API_v1_to_v2_comparison.ipynb

Example files

Need help with the move, or a pre-filled notebook?

Email us and we will send the notebook with your key, or walk through the new numbers with you. New to the API? See API access to get a key.

Request access

10. FAQ

Do I have to migrate now?

No. v1 keeps working and keeps giving the same results. Plan the move when you are ready to take up the current methodology: new trend data and new features are released on v2 only.

Will v1 be switched off?

v1 remains available and frozen: same engine, same reference data. We will give notice before any change to it.

Can I mix v1 and v2 calls?

Yes. The same API key works on both, so you can run them side by side while you compare. Do not mix v1 and v2 numbers in one report, and never send a v2-shaped payload (meta / target, flat activitydata) to a v1 URL: v1 returns 200 but ignores those parts.

Why are my numbers different on v2?

Business-as-usual should match. The external-trends (EXT) and internal-actions (INT) pathways can move because v2 uses newer, versioned trend data; fixed-quantity actions now grow with your organisation by default (absoluteChangeGrows); and a small fix applies to balancing activities. Scope 3.3 well-to-tank stays off unless you opt in. See Why the numbers change.

Do I need to change my payload?

No. v2 accepts your v1 payload unchanged. We recommend adding meta.externalTrendsVersion so results are reproducible. Adopting nested meta / target and flat activitydata with instance ids is optional — see Step 6.

What about scenario analysis and methodology?

Same rule: insert /v2 after /api (/api/v2/scenarioanalysis, /api/v2/methodology). Both v2 endpoints accept the v1 or the v2 payload shape, including nested meta / target. The v1 versions ignore nested meta.

Do I need a new API key?

No. Existing keys work on v1 and v2 with the same headers. Keep the key in an environment variable and never publish it.

Are v2 calls slower?

Somewhat. v2 returns more data per call (for example extra cost and well-to-tank fields), so allow a little more time in client timeouts.

Back to the API access walkthrough.