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.
- 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.
- Fix the trend-data version so results are repeatable.
- Re-check any list of trends you switch off.
- Run v1 and v2 side by side before you switch.
- 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.
| 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-goalseekGET /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.
meta and
target and cannot find activities by instance id. Internal actions
stop applying, with no error.
| 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 | Pin the External Trends pack with meta.externalTrendsVersion | No versioning: trends are frozen into v1 | meta.externalTrendsVersion (or root externalTrendsVersion) selects the pack. Available: 2026Q3, 2026Q3.1 (latest). Pinning removes the warning and externalTrendsPack.id echoes the pin |
| 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".
{
"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": ""
}
}
}
}
}
{
"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) targetsact_depot_electricityonly. -
action_warehouse_solar(Warehouse rooftop solar) targetsact_warehouse_electricityonly.
{
"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, pluswarningswhen 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
internalActionsContributionsitem gains 35 fields. Parsers that reject unknown keys will break. -
Contribution order can differ between versions. Key items on
actionid, not array position. -
paybackPeriodnow uses discounted cash flow and counts the start year, so it is usually one year higher. The undiscounted figure is innominal.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
| 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.
| Priority | Change | v1 | v2 |
|---|---|---|---|
| Essential | New top-level externalTrendsPack (standard and extended) | absent | { id, label, publishedAt, summary, status, isLatest, latestId }, e.g. id '2026Q3.1' |
| 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) |
{
"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
}
]
}
]
}
{
"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(andwarningswhen unpinned). Nothing is removed. -
externalActivityTrendsContributionsat the top level has one row per trend (activitytrendid), summed across org units.orgunitidis omitted, andactivity/balancingactivityarenullwhen they differ between units. Per-unit rows are still inorgunitResults[].. Trend items also gain savings fields.externalActivityTrendsContributions -
maccByEndpointslice items gainannualisedMarginalCost,cumulativeCashFlow,endyear,lifespanYears,marginalCost,nominal,opexCost,presentValueCapitalCost,presentValueOpexStartYear. -
Contribution items add well-to-tank fields such as
netImpactWttandtotalAbatementTotal. 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. -
balancingCumulativeActivityImpactByYearincludes zero-valued years before the action'sstartyear. -
transitionPlanis only in the standard response, on both versions. If you need it, make a standard call as well. -
Contribution
activitystrings are unchanged for v1-format requests. With the v2 format they echo your own instance ids.
| 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 |
{
"_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
}
}
}
}
}
{
"_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.
| 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).
#!/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
externalTrendsPackand, when you do not pin a pack,warnings. - Look up contributions by
actionid, not by position. - Relabel
paybackPeriodas discounted, or readnominal.paybackPeriodfor the undiscounted figure. - Error bodies keep
errorandmessage; v2 also includespath.
Pin the External Trends pack
Recommended Standard + extendedWithout 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.
"meta": {
"externalTrendsVersion": "2026Q3.1"
}
- A v1-format body can use
meta.externalTrendsVersionor a rootexternalTrendsVersionfield. - The response's
externalTrendsPack.idechoes the pack used, andwarningsdisappears. - An unknown version returns HTTP 400 with
latestIdandavailableIds. List packs withGET /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- Send the same payloads to both versions — the comparison notebook does this for you.
- Check that BAU matches. If it does not, check the request first.
- Review EXT and INT changes against the causes in section 6.
- For actions with
absolutechange, decide whether the change should grow with the organisation. Set"absoluteChangeGrows": falseto keep v1 behaviour. - 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. - Leave
meta.includeFERAoff to compare like for like. Turning it on adds Scope 3.3 emissions and raises totals. - 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[].. The top-level list is now one row perexternalActivityTrendsContributions activitytrendid. - Use the new
maccByEndpointfields (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
startyearinbalancingCumulativeActivityImpactByYear. - 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.
#!/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
metaand target settings intotarget. 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 exampleact_warehouse_electricity. - Each row needs
datastructureversion: 2on the org unit,catalogactivityid,activitynameandemissionfactorid(replacesemissionfactorname).emissionfactortrendidandactivitytrendidare optional; set""to opt out of a trend. - Add
meta.externalTrendsVersionyourself (step 3). - New optional settings:
enabled,endyear,endafter,absoluteChangeGrowson actions;macmethod,macvaluation,discountrate,includeFERAinmeta. - 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
warningsarray andexternalTrendsPack.idon 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.
Example files
- request-v1.json / request-v2.json — the same organisation in both formats
- request-v2-multi-instance.json — two electricity rows sharing one catalogue activity
- response-standard-v1.json / response-standard-v2.json — standard responses (trimmed)
- response-extended-v1-excerpt.json / response-extended-v2-excerpt.json — extended response excerpts
-
curl-v2-calculate.sh
/
curl-migrate-payload.sh
— scripts with a
YOUR_API_KEYplaceholder
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.