I'm using the Autodesk Construction Cloud API endpoint:
GET /issues/v1/projects/{projectId}/issue-root-cause-categories
I noticed that calling the endpoint normally works fine:
import pandas as pd
def fetchRaw(path, params={}):
url = f"https://developer.api.autodesk.com/construction/{path}"
headers = {
"Authorization": f"Bearer {access_token}",
"Accept": "application/json"
}
response = requests.get(url, headers=headers, params=params)
print(f"Status code: {response.status_code}")
try:
return response.json()
except Exception:
print("Couldn't convert the response to JSON.")
print(response.text[:1000])
return None
project_id = ""
path = f"issues/v1/projects/{project_id}/issue-root-cause-categories"
output = fetchRaw(path)
df = pd.json_normalize(output["results"])
display(df)
This returns all root cause categories correctly.
Problem when adding include=rootcauses
params = {"include": "rootcauses"}
outputInclude = fetchRaw(path, params=params)
dfInclude = pd.json_normalize(outputInclude["results"])
display(dfInclude)
Surprisingly, this returns the same result as the request without the include parameter. The rootCauses field is not populated.
Workaround: adding a filter
If I add a filter parameter (e.g., filter[updatedAt]), the API returns the rootCauses field correctly:
params = {
"include": "rootcauses",
"filter[updatedAt]": "1900-01-01..9999-12-31"
}
outputInclude = fetchRaw(path, params=params)
dfInclude = pd.json_normalize(outputInclude["results"])
display(dfInclude)
Now the rootCauses field appears as expected.
Observation
It seems the include=rootcauses parameter does not take effect unless a filter is applied. Calling the endpoint with just include=rootcauses behaves the same as without it.
Has anyone experienced this behavior? Is there a known requirement or workaround to get rootCauses consistently without adding a filter?