Codes et réponses d’erreur courants

Les erreurs dans l’API OneDrive sont renvoyées à l’aide de codes d’état HTTP standard, ainsi que d’un objet de réponse d’erreur JSON. Les codes d’état HTTP suivants doivent être prévus.

Code d’état Message d’état Description
400 Demande incorrecte (Bad Request) Impossible de traiter la demande car elle est de format non valide ou incorrecte.
401 Non autorisé (Unauthorized) Informations d’authentification nécessaires manquantes ou non valides pour la ressource.
403 Interdit L’accès à la ressource demandée est refusé. L’utilisateur ne dispose peut-être pas des autorisations suffisantes.
404 Introuvable (Not Found) La ressource demandée n’existe pas.
405 Méthode non autorisée (Method Not Allowed) La méthode HTTP dans la demande n’est pas autorisée sur la ressource.
406 Non acceptable (Not Acceptable) Ce service ne prend pas en charge le format demandé dans l’en-tête Accept.
409 Conflit L’état actuel n’est pas compatible avec les attentes de la demande. Par exemple, le dossier parent spécifié n’existe peut-être pas.
410 Non disponible (Gone) La ressource demandée n’est plus disponible sur le serveur.
411 Longueur requise (Length Required) Un en-tête Content-Length est requise sur la demande.
412 Échec de la condition préalable (Precondition Failed) Une condition préalable fournie dans la demande (un en-tête if-match, par exemple) ne correspond pas à l’état actuel de la ressource.
413 Entité de demande trop grande (Request Entity Too Large) La taille de la demande dépasse la limite maximale.
415 Type de support non pris en charge (Unsupported Media Type) Le type de contenu de la demande est un format qui n’est pas pris en charge par le service.
416 La gamme demandée ne peut pas être satisfaite (Requested Range Not Satisfiable) La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible.
422 Impossible de traiter l’entité (Unprocessable Entity) Impossible de traiter la demande car elle est sémantique incorrecte.
429 Trop de demandes (Too Many Requests) L’application cliente a été limitée et ne doit pas tenter de répéter la demande tant qu’un certain délai ne s’est pas écoulé.
500 Erreur interne du serveur (Internal Server Error) Une erreur du serveur interne s’est produite lors du traitement de la demande.
501 Non implémenté (Not Implemented) La fonctionnalité demandée n’est pas implémentée.
503 Service non disponible Le service est temporairement indisponible. Vous pouvez répéter la demande après un délai. Il peut y avoir un en-tête Retry-After.
507 Stockage insuffisant (Insufficient Storage) Le quota de stockage maximum a été atteint.
509 Limite de bande passante dépassée Votre application a été limitée car elle a dépassé la capacité maximale de la bande passante. Votre application peut renouveler la demande une fois qu’un délai plus long s’est écoulé.

La réponse d’erreur est un seul objet JSON qui contient une propriété unique nommée error. Cet objet inclut tous les détails de l’erreur. Vous pouvez utiliser les informations renvoyées ici à la place, ou en plus du code d’état HTTP renvoyé. Voici un exemple de corps d’erreur JSON complet.

{
  "error": {
    "code": "invalidRange",
    "message": "Uploaded fragment overlaps with existing data.",
    "innererror": {
      "code": "fragmentOverlap"
    }
  }
}

Propriété du code

La propriété du code contient l’une des 15 valeurs possibles. Les applications doivent être prêtes à gérer l’une de ces erreurs.

Code Description
accessDenied L’appelant n’est pas autorisé à effectuer l’action.
activityLimitReached L’application ou l’utilisateur a été limité(e).
generalException Une erreur inconnue s’est produite.
invalidRange La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible.
invalidRequest La demande est de format non valide ou incorrecte.
itemNotFound La ressource est introuvable.
malwareDetected Un programme malveillant a été détecté dans la ressource demandée.
nameAlreadyExists Le nom de l’élément spécifié existe déjà.
notAllowed L’action n’est pas autorisée par le système.
notSupported La demande n’est pas prise en charge par le système.
resourceModified La ressource mise à jour a changé depuis que l’appelant l’a lue, généralement une discordance eTag.
resyncRequired Le jeton delta n’est plus valide et l’application doit rétablir l’état de synchronisation.
serviceNotAvailable Le service n’est pas disponible. Réessayez la demande après un délai. Il peut y avoir un en-tête Retry-After.
quotaLimitReached L’utilisateur a atteint sa limite de quota.
unauthenticated L’appelant n’est pas authentifié.

L’objet innererror peut contenir de manière récursive plus d’objets innererror avec des codes d’erreur supplémentaires et plus spécifiques. Lors de la gestion d’une erreur, les applications doivent mettre tous les codes d’erreur disponibles en boucle et utiliser le code le plus détaillé qu’elles comprennent. Certains codes plus détaillés sont répertoriés en bas de cette page.

Pour vérifier qu’un objet d’erreur est une erreur que vous attendez, vous devez effectuer une boucle sur les objets innererror pour rechercher les codes d’erreur attendus. Par exemple :

public bool IsError(string expectedErrorCode)
{
    OneDriveInnerError errorCode = this.Error;
    while (null != errorCode)
    {
        if (errorCode.Code == expectedErrorCode)
            return true;
        errorCode = errorCode.InnerError;
    }
    return false;
}

Pour obtenir un exemple complet permettant de gérer correctement des erreurs, consultez la page relative à la gestion des codes OneDrive.

La propriété message à la racine contient un message d’erreur destiné au développeur. Les messages d’erreur ne sont pas localisés et ne doivent pas être affichés directement pour l’utilisateur. Lors de la gestion des erreurs, votre code ne doit pas utiliser les valeurs message, car elles sont susceptibles de changer à tout moment et contiennent souvent des informations dynamiques propres à la demande ayant échoué. Vous devez coder uniquement par rapport aux codes d’erreur renvoyés dans les propriétés code.

Pour plus d’informations sur la ressource renvoyée dans la réponse d’erreur, consultez la rubrique Type de ressource d’erreur.

Codes d’erreur détaillés

Voici quelques erreurs supplémentaires que votre application peut rencontrer dans les objets imbriqués innererror . Les applications ne sont pas tenues de les gérer, mais le peuvent si elles le souhaitent. Le service peut ajouter de nouveaux codes d’erreur ou arrêter de retourner les anciens à tout moment. Il est donc important que toutes les applications puissent gérer les 15 de base ci-dessus.

Code Description
accessRestricted L’accès est limité au propriétaire de l’élément.
cannotSnapshotTree Impossible d’obtenir un instantané delta cohérent. Essayez à nouveau ultérieurement.
childItemCountExceeded La limite maximale du nombre d’éléments enfants a été atteinte.
entityTagDoesNotMatch ETag ne correspond pas à la valeur de l’élément actuelle.
fragmentLengthMismatch La taille totale déclarée pour ce fragment est différente de celle de la session de téléchargement.
fragmentOutOfOrder Le fragment téléchargé ne fonctionne pas.
fragmentOverlap Le fragment téléchargé remplace les données existantes.
invalidAcceptType Type d’acceptation non valide.
invalidParameterFormat Format de paramètre non valide.
invalidPath Le nom contient des caractères non valides.
invalidQueryOption Option de requête non valide.
invalidStartIndex Index de début non valide.
lockMismatch Le jeton de verrouillage ne correspond pas au verrouillage existant.
lockNotFoundOrAlreadyExpired Il n’existe actuellement aucun verrou non expiré sur l’élément.
lockOwnerMismatch L’ID du propriétaire du verrouillage ne correspond pas à l’ID fourni.
malformedEntityTag Le format de l’en-tête ETag est incorrect. Les en-têtes ETag doivent être des chaînes entre guillemets.
maxDocumentCountExceeded La limite maximale sur le nombre de documents est atteinte.
maxFileSizeExceeded La taille maximale du fichier est dépassée.
maxFolderCountExceeded La limite maximale sur le nombre de dossiers est atteinte.
maxFragmentLengthExceeded La taille maximale du fichier est dépassée.
maxItemCountExceeded La limite maximale sur le nombre d’éléments est atteinte.
maxQueryLengthExceeded La longueur de requête maximale est dépassée.
maxStreamSizeExceeded La taille maximale de flux est dépassée.
parameterIsTooLong La longueur maximale du paramètre est dépassée.
parameterIsTooSmall Le paramètre est inférieur à la valeur minimale.
pathIsTooLong Le chemin d’accès dépasse la longueur maximale.
pathTooDeep La limite de profondeur de hiérarchie de dossier est atteinte.
propertyNotUpdateable La propriété ne peut pas être mise à jour.
resyncApplyDifferences Resynchronisation requise. Remplacez les éléments locaux par la version du serveur (y compris les suppressions) si vous êtes sûr que le service était à jour avec vos modifications locales lors de la dernière synchronisation. Téléchargez les modifications locales que le serveur ignore.
resyncRequired La resynchronisation est requise.
resyncUploadDifferences Resynchronisation requise. Téléchargez les éléments locaux que le service n’a pas renvoyés, et téléchargez les fichiers qui diffèrent de la version du serveur (tout en conservant les deux copies si vous ne savez pas quelle est la plus récente).
serviceNotAvailable Le serveur ne peut pas traiter la demande actuelle.
serviceReadOnly La ressource est temporairement en lecture seule.
throttledRequest Trop de demandes.
tooManyResultsRequested Trop de résultats demandés.
tooManyTermsInQuery Trop de termes dans la requête.
totalAffectedItemCountExceeded L’opération n’est pas autorisée, car le nombre d’éléments concernés dépasse le seuil.
truncationNotAllowed La troncation des données n’est pas autorisée.
uploadSessionFailed La session de téléchargement a échoué.
uploadSessionIncomplete La session de téléchargement est incomplète.
uploadSessionNotFound Session de téléchargement introuvable.
virusSuspicious Ce document est suspect et contient peut-être un virus.
zeroOrFewerResultsRequested Zéro résultat ou moins demandés.