0

I am writing a python script that automates the process of getting drawing files from a project. Currently I am able to access but hub, list of projects and folders through the script. However, whenever I try to search the folder for all drawing files I get a 403 Error saying the users could not be authenticated.

I am using 2 legged authentication to get the access token. I added data:search to the scope as required by the api but still get the same error. I have search everywhere online and nothing seems to work. Please is there anyone that can help.

I have attached the access token function, the search function and an image of the result.

def getAccessToken():
url = "https://developer.api.autodesk.com/authentication/v1/authenticate"
payload = 'client_id={client_id}&client_secret={client_secret}&grant_type=client_credentials&scope=code%3Aall%20data%3Awrite%20data%3Aread%20data%3Asearch%20bucket%3Acreate%20bucket%3Adelete%20bucket%3Aread%20account%3Aread'
headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
}
response = requests.request("POST", url, headers=headers, data=payload)
json_data = json.loads(response.text)
return json_data["access_token"]
token = getAccessToken()

def getDrawingFiles(folderId):




def getDrawingFiles(folderId):
    url = f"https://developer.api.autodesk.com/data/v1/projects/{project_id}/folders/{folderId}/search"
    payload = {}
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': f'Bearer {token}',
        'x-user-id': userId,
        'x-ads-region':'emea'
    }
    response = requests.request("GET", url, headers=headers, data=payload)
    json_data = json.loads(response.text)
    print(json_data)


getDrawingFiles('urn:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)

Error Message

Please can anyone offer some advice?

Andrew
  • 29
  • 9

1 Answers1

0

The main reason why you are getting this error is because the endpoint for search in a folder only takes a 3 legged authentication token. Unfortunately there is no mention to use a 2 legged context with xUserId like you do in the other endpoints.

https://forge.autodesk.com/en/docs/data/v2/reference/http/projects-project_id-folders-folder_id-search-GET/#headers

Jaime Rosales
  • 1,106
  • 1
  • 6
  • 8