[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-\u002Fblog\u002Fag-energy-api-v1-contract-parameters-endpoints-response-formats":3},{"id":4,"title":5,"author":6,"body":7,"category":1060,"cover":1061,"date":1062,"description":1063,"extension":1064,"meta":1065,"navigation":1066,"path":1067,"seo":1068,"stem":1069,"tags":1070,"__hash__":1076},"blog\u002Fblog\u002Fag-energy-api-v1-contract-parameters-endpoints-response-formats.md","Ag and Energy API v1 Contract: New Parameters, Endpoints, and Response Formats","Township Canada",{"type":8,"value":9,"toc":1049},"minimark",[10,26,43,53,59,62,85,95,102,121,156,182,185,227,247,251,257,260,266,366,371,412,421,425,428,431,559,574,771,783,787,790,800,810,818,822,825,892,924,935,939,947,950,1025,1045],[11,12,13,14,18,19,21,22,25],"p",{},"You integrated the Energy API a few weeks ago. Your application calls ",[15,16,17],"code",{},"\u002Fenergy\u002Factivity"," for each LSD in a disposition area, parses the summary, and renders a dashboard. It works. Then one morning the endpoint returns a 404. The URL is correct, the API key is valid, and the same call ran fine last night. The problem is that ",[15,20,17],{}," no longer exists. It is now ",[15,23,24],{},"\u002Fenergy\u002Fsummary",", and the v1 contract is live.",[11,27,28,29,36,37,42],{},"This post covers what changed in the v1 contract for both the ",[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fag",[34],"nofollow","Ag API"," and the ",[30,38,41],{"href":39,"rel":40},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fenergy",[34],"Energy API",", why it changed, and how to update your integration. The short version: one endpoint was renamed, several new parameters were added, and every response now follows a predictable shape.",[44,45,47,48,50,51],"h2",{"id":46},"the-breaking-change-energyactivity-is-now-energysummary","The breaking change: ",[15,49,17],{}," is now ",[15,52,24],{},[11,54,55,56,58],{},"The rename is a one-line URL update. The response schema is unchanged: well counts by status, pipeline and facility rollups, dominant operator, and last activity date. If your code parsed the old response, it still works against ",[15,57,24],{}," with no other changes.",[11,60,61],{},"Why the rename: the word \"activity\" was ambiguous. Some developers expected it to return a time-series of recent activity on the parcel. Others expected a summary of what exists there now. \"Summary\" describes what the endpoint actually returns: a snapshot of what is on the LSD at query time.",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-diff shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","- GET \u002Fenergy\u002Factivity?legal_location=7-10-13-9-W4\n+ GET \u002Fenergy\u002Fsummary?legal_location=7-10-13-9-W4\n","diff","",[15,70,71,79],{"__ignoreMap":68},[72,73,76],"span",{"class":74,"line":75},"line",1,[72,77,78],{},"- GET \u002Fenergy\u002Factivity?legal_location=7-10-13-9-W4\n",[72,80,82],{"class":74,"line":81},2,[72,83,84],{},"+ GET \u002Fenergy\u002Fsummary?legal_location=7-10-13-9-W4\n",[11,86,87,88,90,91,94],{},"If you are calling ",[15,89,17],{}," today, update the URL. The old path returns ",[15,92,93],{},"404 not_found",".",[44,96,98,101],{"id":97},"include-projection-request-only-the-sections-you-need",[15,99,100],{},"include="," projection: request only the sections you need",[11,103,104,105,108,109,112,113,116,117,120],{},"Both the ",[30,106,35],{"href":107},"\u002Fblog\u002Fag-api-energy-api-build-applications-agriculture-energy-parcel-data"," and Energy API full report endpoints (",[15,110,111],{},"\u002Fag\u002Freport"," and ",[15,114,115],{},"\u002Fenergy\u002Freport",") now accept an ",[15,118,119],{},"include"," query parameter. Pass a comma-separated list of section names, and the API returns only those sections. Omitted sections are never queried on the backend, so the response is faster and smaller.",[11,122,123,124,127,128,127,131,127,134,127,137,127,140,127,143,127,146,127,149,152,153,94],{},"For the Ag API, valid section names are ",[15,125,126],{},"productivity",", ",[15,129,130],{},"cropping",[15,132,133],{},"soil",[15,135,136],{},"land_use",[15,138,139],{},"drought",[15,141,142],{},"wetlands",[15,144,145],{},"hydrology",[15,147,148],{},"parcel_context",[15,150,151],{},"provincial_detail",", and ",[15,154,155],{},"geometry",[11,157,158,159,127,162,127,165,127,168,127,171,127,174,127,177,152,180,94],{},"For the Energy API: ",[15,160,161],{},"summary",[15,163,164],{},"production",[15,166,167],{},"tenure",[15,169,170],{},"wells",[15,172,173],{},"pipelines",[15,175,176],{},"facilities",[15,178,179],{},"alternative_energy",[15,181,155],{},[11,183,184],{},"A crop insurance application that only needs the productivity rating and soil data can request exactly that:",[63,186,190],{"className":187,"code":188,"language":189,"meta":68,"style":68},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","curl \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fag\u002Freport?legal_location=NW-14-39-27-W4&include=productivity,soil\" \\\n  -H \"X-API-Key: YOUR_API_KEY\"\n","bash",[15,191,192,213],{"__ignoreMap":68},[72,193,194,198,202,206,209],{"class":74,"line":75},[72,195,197],{"class":196},"sYn-s","curl",[72,199,201],{"class":200},"sbYkP"," \"",[72,203,205],{"class":204},"sTbE_","https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fag\u002Freport?legal_location=NW-14-39-27-W4&include=productivity,soil",[72,207,208],{"class":200},"\"",[72,210,212],{"class":211},"se3Ec"," \\\n",[72,214,215,219,221,224],{"class":74,"line":81},[72,216,218],{"class":217},"sz9Cv","  -H",[72,220,201],{"class":200},[72,222,223],{"class":204},"X-API-Key: YOUR_API_KEY",[72,225,226],{"class":200},"\"\n",[11,228,229,230,232,233,236,237,239,240,242,243,94],{},"The ",[15,231,155],{}," section is new. It attaches the parcel boundary as GeoJSON under ",[15,234,235],{},"parcel.geometry"," in the response. It is never included by default: you must add ",[15,238,155],{}," to the ",[15,241,119],{}," list explicitly. This is useful if your application renders parcel boundaries on a map and you want the polygon in the same call as the report data, rather than making a second request to the ",[30,244,246],{"href":245},"\u002Fguides\u002Fapi-integration","Search API",[44,248,250],{"id":249},"section-routes-one-endpoint-per-report-section","Section routes: one endpoint per report section",[11,252,253,254,256],{},"Before v1, the only way to get a single section of the report (say, just the cropping data for a quarter section) was to call ",[15,255,111],{}," and ignore the other sections. That works, but the backend still queries every data source, and you pay for the latency.",[11,258,259],{},"The v1 contract adds a dedicated endpoint for each report section:",[11,261,262],{},[263,264,265],"strong",{},"Ag API section routes:",[267,268,269,282],"table",{},[270,271,272],"thead",{},[273,274,275,279],"tr",{},[276,277,278],"th",{},"Endpoint",[276,280,281],{},"Returns",[283,284,285,296,306,316,326,336,346,356],"tbody",{},[273,286,287,293],{},[288,289,290],"td",{},[15,291,292],{},"\u002Fag\u002Fproductivity",[288,294,295],{},"LSRS and CLI scores, classes, and limiters",[273,297,298,303],{},[288,299,300],{},[15,301,302],{},"\u002Fag\u002Fcropping",[288,304,305],{},"Dominant crop, category, rotation, and diversity index",[273,307,308,313],{},[288,309,310],{},[15,311,312],{},"\u002Fag\u002Fsoil",[288,314,315],{},"Soil classification, drainage, slope, and parent material",[273,317,318,323],{},[288,319,320],{},[15,321,322],{},"\u002Fag\u002Fland-use",[288,324,325],{},"AAFC land-use class, IPCC classification, and percentage breakdown",[273,327,328,333],{},[288,329,330],{},[15,331,332],{},"\u002Fag\u002Fdrought",[288,334,335],{},"Canadian Drought Monitor class and assessment date",[273,337,338,343],{},[288,339,340],{},[15,341,342],{},"\u002Fag\u002Fwetlands",[288,344,345],{},"Wetland coverage for the parcel",[273,347,348,353],{},[288,349,350],{},[15,351,352],{},"\u002Fag\u002Fhydrology",[288,354,355],{},"Nearest watercourse and water body with distances",[273,357,358,363],{},[288,359,360],{},[15,361,362],{},"\u002Fag\u002Fparcel-context",[288,364,365],{},"Quarter section context and identifiers",[11,367,368],{},[263,369,370],{},"Energy API section routes:",[267,372,373,381],{},[270,374,375],{},[273,376,377,379],{},[276,378,278],{},[276,380,281],{},[283,382,383,392,402],{},[273,384,385,389],{},[288,386,387],{},[15,388,24],{},[288,390,391],{},"Well counts, pipeline and facility rollups, dominant operator",[273,393,394,399],{},[288,395,396],{},[15,397,398],{},"\u002Fenergy\u002Fproduction",[288,400,401],{},"Trailing 12-month Petrinex volumes",[273,403,404,409],{},[288,405,406],{},[15,407,408],{},"\u002Fenergy\u002Falternative-energy",[288,410,411],{},"CCS and geothermal tenure",[11,413,414,415,418,419,94],{},"Each section route takes a ",[15,416,417],{},"legal_location"," parameter and returns the same data shape as the corresponding section of the full report. If your application needs only one piece of information (the drought class for 200 quarter sections, the production volumes for a set of LSDs), the section route is the right choice. It queries a single data source and returns faster than the full report with ",[15,420,100],{},[44,422,424],{"id":423},"collection-routes-paginated-filterable-access-to-wells-pipelines-facilities-and-tenure","Collection routes: paginated, filterable access to wells, pipelines, facilities, and tenure",[11,426,427],{},"The full energy report includes wells, pipelines, facilities, and tenure rows for the queried LSD. For most parcels, the counts are small enough that everything fits in the response. But on busy LSDs in established producing areas, a single parcel can have dozens of wells, multiple pipeline crossings, and overlapping tenure dispositions. The report caps these arrays at 50 rows.",[11,429,430],{},"The v1 contract adds collection endpoints that return the full set, paginated and filterable:",[267,432,433,446],{},[270,434,435],{},[273,436,437,440,443],{},[276,438,439],{},"Collection endpoint",[276,441,442],{},"Filters",[276,444,445],{},"Sort options",[283,447,448,475,503,527],{},[273,449,450,455,463],{},[288,451,452],{},[15,453,454],{},"\u002Fenergy\u002Fwells",[288,456,457,127,460],{},[15,458,459],{},"status",[15,461,462],{},"operator",[288,464,465,127,468,127,470,127,472],{},[15,466,467],{},"id",[15,469,459],{},[15,471,462],{},[15,473,474],{},"depth",[273,476,477,482,489],{},[288,478,479],{},[15,480,481],{},"\u002Fenergy\u002Fpipelines",[288,483,484,127,486],{},[15,485,459],{},[15,487,488],{},"substance",[288,490,491,127,493,127,495,127,497,127,500],{},[15,492,467],{},[15,494,488],{},[15,496,459],{},[15,498,499],{},"h2s",[15,501,502],{},"length",[273,504,505,510,517],{},[288,506,507],{},[15,508,509],{},"\u002Fenergy\u002Ffacilities",[288,511,512,127,514],{},[15,513,459],{},[15,515,516],{},"category",[288,518,519,127,521,127,523,127,525],{},[15,520,467],{},[15,522,516],{},[15,524,459],{},[15,526,462],{},[273,528,529,534,546],{},[288,530,531],{},[15,532,533],{},"\u002Fenergy\u002Ftenure",[288,535,536,127,539,127,541,127,543],{},[15,537,538],{},"tenure_kind",[15,540,459],{},[15,542,462],{},[15,544,545],{},"expires_within_days",[288,547,548,127,551,127,554,127,557],{},[15,549,550],{},"expiry",[15,552,553],{},"urgency",[15,555,556],{},"area",[15,558,467],{},[11,560,561,562,565,566,569,570,573],{},"Each collection endpoint takes ",[15,563,564],{},"per_page"," (1 to 200, default 50) and ",[15,567,568],{},"page"," parameters and returns a ",[15,571,572],{},"meta"," object with pagination state:",[63,575,579],{"className":576,"code":577,"language":578,"meta":68,"style":68},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n  \"legal_location\": \"7-10-13-9-W4\",\n  \"province\": \"AB\",\n  \"rows\": [...],\n  \"meta\": {\n    \"total\": 214,\n    \"page\": 1,\n    \"per_page\": 50,\n    \"sort\": \"status\",\n    \"dir\": \"asc\"\n  }\n}\n","json",[15,580,581,587,611,632,654,668,688,704,720,740,759,765],{"__ignoreMap":68},[72,582,583],{"class":74,"line":75},[72,584,586],{"class":585},"soVBu","{\n",[72,588,589,593,596,598,601,603,606,608],{"class":74,"line":81},[72,590,592],{"class":591},"s4Jsk","  \"",[72,594,417],{"class":595},"sLorS",[72,597,208],{"class":591},[72,599,600],{"class":585},":",[72,602,201],{"class":200},[72,604,605],{"class":204},"7-10-13-9-W4",[72,607,208],{"class":200},[72,609,610],{"class":585},",\n",[72,612,614,616,619,621,623,625,628,630],{"class":74,"line":613},3,[72,615,592],{"class":591},[72,617,618],{"class":595},"province",[72,620,208],{"class":591},[72,622,600],{"class":585},[72,624,201],{"class":200},[72,626,627],{"class":204},"AB",[72,629,208],{"class":200},[72,631,610],{"class":585},[72,633,635,637,640,642,644,647,651],{"class":74,"line":634},4,[72,636,592],{"class":591},[72,638,639],{"class":595},"rows",[72,641,208],{"class":591},[72,643,600],{"class":585},[72,645,646],{"class":585}," [",[72,648,650],{"class":649},"srjyR","...",[72,652,653],{"class":585},"],\n",[72,655,657,659,661,663,665],{"class":74,"line":656},5,[72,658,592],{"class":591},[72,660,572],{"class":595},[72,662,208],{"class":591},[72,664,600],{"class":585},[72,666,667],{"class":585}," {\n",[72,669,671,674,678,680,682,686],{"class":74,"line":670},6,[72,672,673],{"class":591},"    \"",[72,675,677],{"class":676},"sa2tF","total",[72,679,208],{"class":591},[72,681,600],{"class":585},[72,683,685],{"class":684},"s7CZa"," 214",[72,687,610],{"class":585},[72,689,691,693,695,697,699,702],{"class":74,"line":690},7,[72,692,673],{"class":591},[72,694,568],{"class":676},[72,696,208],{"class":591},[72,698,600],{"class":585},[72,700,701],{"class":684}," 1",[72,703,610],{"class":585},[72,705,707,709,711,713,715,718],{"class":74,"line":706},8,[72,708,673],{"class":591},[72,710,564],{"class":676},[72,712,208],{"class":591},[72,714,600],{"class":585},[72,716,717],{"class":684}," 50",[72,719,610],{"class":585},[72,721,723,725,728,730,732,734,736,738],{"class":74,"line":722},9,[72,724,673],{"class":591},[72,726,727],{"class":676},"sort",[72,729,208],{"class":591},[72,731,600],{"class":585},[72,733,201],{"class":200},[72,735,459],{"class":204},[72,737,208],{"class":200},[72,739,610],{"class":585},[72,741,743,745,748,750,752,754,757],{"class":74,"line":742},10,[72,744,673],{"class":591},[72,746,747],{"class":676},"dir",[72,749,208],{"class":591},[72,751,600],{"class":585},[72,753,201],{"class":200},[72,755,756],{"class":204},"asc",[72,758,226],{"class":200},[72,760,762],{"class":74,"line":761},11,[72,763,764],{"class":585},"  }\n",[72,766,768],{"class":74,"line":767},12,[72,769,770],{"class":585},"}\n",[11,772,229,773,775,776,778,779,782],{},[15,774,545],{}," filter on ",[15,777,533],{}," is particularly useful for land acquisition teams. A call like ",[15,780,781],{},"\u002Fenergy\u002Ftenure?legal_location=7-10-13-9-W4&expires_within_days=180"," returns only the Crown dispositions on that LSD that expire within the next six months. Perpetual dispositions are excluded from the window.",[44,784,786],{"id":785},"cross-parcel-endpoints-operator-directory-and-expiring-tenure","Cross-parcel endpoints: operator directory and expiring tenure",[11,788,789],{},"Two Energy API endpoints operate across parcels rather than on a single LSD.",[11,791,792,795,796,799],{},[15,793,794],{},"\u002Fenergy\u002Foperators"," is a browseable directory of AER licensees. It returns each operator's headline liability counts (orphan, abandoned, active wells) and Crown disposition totals. The ",[15,797,798],{},"q"," parameter searches by licensee name or BA code. Default ordering puts the highest-liability operators first.",[11,801,802,805,806,809],{},[15,803,804],{},"\u002Fenergy\u002Ftenure\u002Fexpiring"," returns Crown tenure expiring within a configurable window, across every parcel. A land broker screening for acquisition targets can call ",[15,807,808],{},"\u002Fenergy\u002Ftenure\u002Fexpiring?expires_within_days=90&tenure_kind=png"," to find all Crown petroleum and natural gas dispositions expiring in the next quarter, without specifying a location.",[11,811,812,813,127,815,817],{},"Both endpoints support pagination (",[15,814,564],{},[15,816,568],{},") and sorting.",[44,819,821],{"id":820},"standardized-error-schema","Standardized error schema",[11,823,824],{},"Every error response from the Ag API and Energy API now follows the same shape:",[63,826,828],{"className":576,"code":827,"language":578,"meta":68,"style":68},"{\n  \"error\": {\n    \"code\": \"invalid_legal_location\",\n    \"message\": \"Could not parse 'XX-99-99-99-W9' as a legal land description\"\n  }\n}\n",[15,829,830,834,847,866,884,888],{"__ignoreMap":68},[72,831,832],{"class":74,"line":75},[72,833,586],{"class":585},[72,835,836,838,841,843,845],{"class":74,"line":81},[72,837,592],{"class":591},[72,839,840],{"class":595},"error",[72,842,208],{"class":591},[72,844,600],{"class":585},[72,846,667],{"class":585},[72,848,849,851,853,855,857,859,862,864],{"class":74,"line":613},[72,850,673],{"class":591},[72,852,15],{"class":676},[72,854,208],{"class":591},[72,856,600],{"class":585},[72,858,201],{"class":200},[72,860,861],{"class":204},"invalid_legal_location",[72,863,208],{"class":200},[72,865,610],{"class":585},[72,867,868,870,873,875,877,879,882],{"class":74,"line":634},[72,869,673],{"class":591},[72,871,872],{"class":676},"message",[72,874,208],{"class":591},[72,876,600],{"class":585},[72,878,201],{"class":200},[72,880,881],{"class":204},"Could not parse 'XX-99-99-99-W9' as a legal land description",[72,883,226],{"class":200},[72,885,886],{"class":74,"line":656},[72,887,764],{"class":585},[72,889,890],{"class":74,"line":670},[72,891,770],{"class":585},[11,893,229,894,896,897,127,900,127,903,127,905,127,908,127,911,127,914,152,917,920,921,923],{},[15,895,15],{}," is a machine-readable string from a closed set: ",[15,898,899],{},"invalid_parameter",[15,901,902],{},"missing_parameter",[15,904,861],{},[15,906,907],{},"bc_not_supported",[15,909,910],{},"not_found",[15,912,913],{},"rate_limit_exceeded",[15,915,916],{},"report_failed",[15,918,919],{},"internal_error",". The ",[15,922,872],{}," is a human-readable explanation.",[11,925,926,927,930,931,934],{},"Before v1, error responses varied by endpoint: some returned a plain string, others a different JSON structure. If your error handling parsed specific formats, you can now switch to checking ",[15,928,929],{},"error.code"," everywhere. A single ",[15,932,933],{},"switch"," on that field covers every error the API can return.",[44,936,938],{"id":937},"how-to-test-your-integration-against-the-v1-contract","How to test your integration against the v1 contract",[11,940,941,942,946],{},"The full v1 contract is published as an ",[30,943,945],{"href":944},"\u002Fopenapi.yaml","OpenAPI 3.0 specification",". You can use it with any OpenAPI-compatible tool to validate your requests and responses before deploying.",[11,948,949],{},"A practical migration checklist:",[951,952,953,965,979,991,997,1009],"ol",{},[954,955,956,961,962,964],"li",{},[263,957,958,959],{},"Search your codebase for ",[15,960,17],{}," and replace it with ",[15,963,24],{},". This is the only breaking change.",[954,966,967,978],{},[263,968,969,970,972,973,975,976],{},"Add ",[15,971,100],{}," where you call ",[15,974,111],{}," or ",[15,977,115],{}," if you do not need every section. This reduces latency and payload size.",[954,980,981,984,985,987,988,990],{},[263,982,983],{},"Switch to section routes"," for single-section lookups. If you only call ",[15,986,111],{}," to get the productivity score, ",[15,989,292],{}," is faster.",[954,992,993,996],{},[263,994,995],{},"Switch to collection routes"," if you need more than 50 wells, pipelines, facilities, or tenure rows for a single LSD. The report still works for parcels with fewer rows.",[954,998,999,1002,1003,112,1005,1008],{},[263,1000,1001],{},"Update your error handling"," to read ",[15,1004,929],{},[15,1006,1007],{},"error.message",". The old ad-hoc error formats are gone.",[954,1010,1011,1014,1015,36,1020,1024],{},[263,1012,1013],{},"Test with a real API key"," against the live endpoints. The ",[30,1016,1019],{"href":1017,"rel":1018},"https:\u002F\u002Fdeveloper.townshipcanada.com",[34],"developer portal",[30,1021,1023],{"href":1022},"\u002Fapi","API documentation page"," have updated code examples in curl, JavaScript, and Python.",[11,1026,1027,1028,1035,1036,112,1040,1044],{},"If you are building in TypeScript, the ",[30,1029,1031,1034],{"href":1030},"\u002Fblog\u002Ftownshipcanada-sdk-typescript-npm-package",[15,1032,1033],{},"townshipcanada"," npm package"," is updated to reflect the v1 routes. The ",[30,1037,1039],{"href":1038},"\u002Fguides\u002Fbatch-api-guide","Batch API guide",[30,1041,1043],{"href":1042},"\u002Fguides\u002Fsearch-api-guide","Search API guide"," cover the core location APIs that pair with the Ag and Energy endpoints.",[1046,1047,1048],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}",{"title":68,"searchDepth":81,"depth":81,"links":1050},[1051,1053,1055,1056,1057,1058,1059],{"id":46,"depth":81,"text":1052},"The breaking change: \u002Fenergy\u002Factivity is now \u002Fenergy\u002Fsummary",{"id":97,"depth":81,"text":1054},"include= projection: request only the sections you need",{"id":249,"depth":81,"text":250},{"id":423,"depth":81,"text":424},{"id":785,"depth":81,"text":786},{"id":820,"depth":81,"text":821},{"id":937,"depth":81,"text":938},"product","\u002Fimages\u002Fblog\u002Fag-energy-api-v1-contract-parameters-endpoints-response-formats\u002Fenergy-api-parameters-cover.webp","2026-08-26","The Ag API and Energy API v1 contract adds include= projection, section and collection routes, paginated responses, and a standardized error schema. One breaking change: \u002Fenergy\u002Factivity is now \u002Fenergy\u002Fsummary.","md",{},true,"\u002Fblog\u002Fag-energy-api-v1-contract-parameters-endpoints-response-formats",{"title":5,"description":1063},"blog\u002Fag-energy-api-v1-contract-parameters-endpoints-response-formats",[1071,1072,1073,1074,1075],"API","Developer","Agriculture","Energy","Product Launch","eL5ODGIjj-o7fMlDOe48_svuZXpeHHJTIZvZbmWD1Xg"]