cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
We are making some updates so the Community might be down for a few hours on Monday the 11th of November. Apologies for the inconvenience and thank you for your patience. You can find out more here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

400 Client Error: Bad Request for url: https://api.dropboxapi.com/2/files/create_folder_v2

400 Client Error: Bad Request for url: https://api.dropboxapi.com/2/files/create_folder_v2

JoffreyActeis
New member | Level 2

Hello, I can't get my code Python to work. Can you help me?

 

import dropbox
import requests

# Remplacez ceci par votre propre jeton d'accès OAuth 2
ACCESS_TOKEN = 'Mytoken'

# Remplacez ceci par l'ID de l'utilisateur spécifique que vous souhaitez sélectionner
user_id = ('dbid:Myid')

# Initialisez le client Dropbox
client = dropbox.DropboxTeam(ACCESS_TOKEN)

# Spécifiez le chemin complet du dossier que vous souhaitez créer
chemin_complet_dossier = 'Acteis IUL/Joffrey/NewDossier/'

# Dictionnaire associant les utilisateurs à leurs autorisations
utilisateurs_autorisations = {
    'my email': 'editor',
    #'utilisateur2@email.com': 'editor',
    #'utilisateur3@email.com': 'viewer',
}

# Créez un dictionnaire de données pour la demande POST
data = {
    "autorename": False,
    "path": chemin_complet_dossier
}
# Créez un dictionnaire d'en-têtes pour spécifier l'utilisateur avec "Dropbox-API-Select-User"
headers = {
    'Authorization': f'Bearer {ACCESS_TOKEN}',
    'Content-Type': 'application/json',
    'Dropbox-API-Select-User': user_id
}

# Effectuez une requête POST pour créer le dossier avec l'en-tête spécifié

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()

    # Affichez un message de confirmation si le dossier est créé avec succès
    print(f'Dossier "{response.json()["name"]}" créé avec succès à l\'emplacement : {response.json()["path_display"]}')

    # Partagez le dossier avec chaque utilisateur de la liste et attribuez-leur des autorisations
    for utilisateur, autorisation in utilisateurs_autorisations.items():
        partage_response = client.sharing_add_folder_member(chemin_complet_dossier, utilisateur, autorisation)
        print(f'Le dossier a été partagé avec succès avec {utilisateur} avec l\'autorisation : {autorisation}')

except requests.exceptions.RequestException as e:
    # Gérez les erreurs en cas d'échec de la création du dossier
    print(f'Erreur lors de la création du dossier : {e}')

except dropbox.exceptions.ApiError as e:
    # Gérez les erreurs liées à l'API Dropbox
    print(f'Erreur de l\'API Dropbox : {e}')
1 Reply 1

Greg-DB
Dropbox Staff

When you get a 400 error like this, be sure to print out the response body, as it should contain a more specific error message indicating what the issue is. If you need help with that error, please print it out and share it.

 

Also though, I notice that you're importing and using both 'dropbox' and 'requests', and you're using 'requests' to call the /2/files/create_folder_v2 endpoint yourself. We recommend using the official SDKs, such as 'dropbox' whenever possible though, and it implements native methods for the endpoints for you, so you don't need to use a network client directly, like you are with 'requests'. Specifically, instead of calling /2/files/create_folder_v2 with 'requests', you can use the provided files_create_folder_v2 method on the Dropbox class.

 

I notice you are using the 'Dropbox-API-Select-User' header; that's also available natively on DropboxTeam via the as_user method, which would then give you a Dropbox object which you can then use to call files_create_folder_v2, etc.

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?