Skip to main content

Folder ID returning "d_**********" 404 error

  • November 27, 2023
  • 6 replies
  • 196 views

I’m using OAuth 2.0 and I have verified that the program is making the API call with the correct folder ID beforehand. This program was working for me yesterday, so nothing has changed on my end. I am just a one admin user business account, so I’m pretty sure I have all the correct permissions. Any help would be amazing, thanks.

6 replies

smartoneinok Box
Forum|alt.badge.img
  • Senior Developer Advocate
  • 181 replies
  • November 27, 2023

Hello ✋,


Are you using a SDK, CURL the CLI or Postman? May I see a code snippet if you have one?


Also - if you have the client ID that would be helpful!


Thanks,

Alex, Box Developer Advocate 🥑


  • Author
  • New Participant
  • 2 replies
  • November 27, 2023

Hi Alex,


Thanks for the response. I’m using the Box SDK in Python. I’ll include the relevant code with client ID.


edit: sorry, I can’t figure out why only part of this code is formatted correctly in my reply.


CLIENT_ID = ‘0ucc59pd0fz23g0l2ldjqxznv45a8ffn’

CLIENT_SECRET = ‘

BOX_FOLDER_ID = ‘115239483971’

logging.info(f"Initial BOX_FOLDER_ID: {BOX_FOLDER_ID}")

DEVELOPER_TOKEN = '
************’


#…


Box API Functions


def get_access_token(client_id, client_secret):

url = “https://api.box.com/oauth2/token

data = {

“grant_type”: “client_credentials”,

“client_id”: client_id,

“client_secret”: client_secret

}

try:

response = requests.post(url, data=data)

response.raise_for_status() # This will raise an error for HTTP error codes

return response.json().get(‘access_token’)

except requests.RequestException as e:

logging.error(f"Error getting access token: {e}“)

logging.error(f"HTTP Response: {response.text}”)

return None


def fetch_and_display_folders(access_token, folder_id, folders_listbox):

logging.info(f"Attempting to fetch folders. Access Token: {access_token}, Folder ID: {folder_id}“)

print(f"Making API call with Folder ID: {folder_id}”)

url = f"https://api.box.com/2.0/folders/{folder_id}/items"

params = {“fields”: “name,type,id,modified_at”}

headers = {“Authorization”: f"Bearer {access_token}“}

response = requests.get(url, headers=headers, params=params)

print(f"API Response: {response.json()}”)


if response.status_code != 200:

    logging.error(f"Failed to fetch folders: {response.text}")

    return []



items = response.json().get('entries', [])

logging.info(f"Fetched items: {items}")

folders = [item for item in items if item['type'] == 'folder']

logging.info(f"Filtered folders: {folders}")



for folder in folders:

    if 'modified_at' in folder:

        # Convert the ISO 8601 datetime string to a datetime object

        folder['modified_at'] = datetime.fromisoformat(folder['modified_at'].rstrip('Z'))



# Sort folders based on the datetime object

sorted_folders = sorted(folders, key=lambda x: x.get('modified_at', datetime.min), reverse=True)[:10]

logging.info(f"Sorted folders: {sorted_folders}")



# Debugging: Print the sorted folder names and their modified_at dates

for folder in sorted_folders:

    print(f"Folder: {folder['name']}, Modified At: {folder.get('modified_at')}")



folders_listbox.delete(0, tk.END)

for folder in sorted_folders:

    folders_listbox.insert(tk.END, folder['name'])

    logging.info(f"Inserted folder into listbox: {folder['name']}")



return sorted_folders


smartoneinok Box
Forum|alt.badge.img
  • Senior Developer Advocate
  • 181 replies
  • November 28, 2023

Let me look into and report back!


Alex


  • Author
  • New Participant
  • 2 replies
  • November 28, 2023

Thanks Alex! Appreciate the help.


Edit: If it helps, I had the app somewhat working the day I was writing it and it was returning the list of folders. Then the next day I went to continue working on it I started getting the d_ prefix added to the folder id. I’m pretty sure nothing changed on my end during that time.


smartoneinok Box
Forum|alt.badge.img
  • Senior Developer Advocate
  • 181 replies
  • November 28, 2023

I’m not sure why the code formatted the way it did… but I am noticing something right off the bat.


It looks like you are using the grant type of client_credentials… which would only be used for a client credentials type of application.


data = {

“grant_type”: “client_credentials”,

“client_id”: client_id,

“client_secret”: client_secret

}


For oauth - you will want to follow the instructions in this section.


Also - my collegue Rui made an awesome python oauth quick start template here.


Forum|alt.badge.img
  • New Member
  • 1 reply
  • September 11, 2024

Jake, were you able to resolve this? I’m having the same trouble when trying to delete folders on my CLI. 


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings