Types de ressources et réponses d’erreur Microsoft GraphMicrosoft Graph error responses and resource types

Les erreurs dans Microsoft Graph sont renvoyées à l’aide de codes d’état HTTP standard, ainsi que d’un objet de réponse d’erreur JSON.Errors in Microsoft Graph are returned using standard HTTP status codes, as well as a JSON error response object.

Codes d’état HTTPHTTP status codes

Le tableau suivant répertorie et décrit les codes d’état HTTP pouvant être renvoyés.The following table lists and describes the HTTP status codes that can be returned.

Code d'étatStatus code Message d’étatStatus message DescriptionDescription
4004.0.0 Demande incorrecte (Bad Request)Bad Request Impossible de traiter la demande car elle est de format non valide ou incorrecte.Cannot process the request because it is malformed or incorrect.
401401 Non autorisé (Unauthorized)Unauthorized Informations d’authentification nécessaires manquantes ou non valides pour la ressource.Required authentication information is either missing or not valid for the resource.
403403 Forbidden Interdit (Forbidden)Forbidden L’accès à la ressource demandée est refusé. L’utilisateur ne dispose peut-être pas des autorisations suffisantes. Access is denied to the requested resource. The user might not have enough permission.

Important : si les stratégies d’accès conditionnel sont appliquées à une ressource, une erreur HTTP 403 : Interdit, error=insufficent_claims, peut être renvoyée.Important: If conditional access policies are applied to a resource, a HTTP 403; Forbidden error=insufficent_claims may be returned. Pour plus d’informations sur Microsoft Graph et l’accès conditionnel, consultez le guide du développeur pour l’accès conditionnel à Azure Active Directory.For more details on Microsoft Graph and conditional access see Developer Guidance for Azure Active Directory Conditional Access
404404 errors Introuvable (Not Found)Not Found La ressource demandée n’existe pas.The requested resource doesn’t exist.
405405 Méthode non autorisée (Method Not Allowed)Method Not Allowed La méthode HTTP dans la demande n’est pas autorisée sur la ressource.The HTTP method in the request is not allowed on the resource.
406406 Non acceptable (Not Acceptable)Not Acceptable Ce service ne prend pas en charge le format demandé dans l’en-tête Accept.This service doesn’t support the format requested in the Accept header.
409409 ConflictConflict 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.The current state conflicts with what the request expects. For example, the specified parent folder might not exist.
4104.1.0 Non disponible (Gone)Gone La ressource demandée n’est plus disponible sur le serveur.The requested resource is no longer available at the server.
4114-11 Longueur requise (Length Required)Length Required Un en-tête Content-Length est requise sur la demande.A Content-Length header is required on the request.
4124.12 Échec de la condition préalable (Precondition Failed)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.A precondition provided in the request (such as an if-match header) does not match the resource's current state.
4134.13 Entité de demande trop grande (Request Entity Too Large)Request Entity Too Large La taille de la demande dépasse la limite maximale.The request size exceeds the maximum limit.
4154.15 Type de support non pris en charge (Unsupported Media Type)Unsupported Media Type Le type de contenu de la demande est un format qui n’est pas pris en charge par le service.The content type of the request is a format that is not supported by the service.
4164.16 La gamme demandée ne peut pas être satisfaite (Requested Range Not Satisfiable)Requested Range Not Satisfiable La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible.The specified byte range is invalid or unavailable.
422422 Impossible de traiter l’entité (Unprocessable Entity)Unprocessable Entity Impossible de traiter la demande car elle est sémantique incorrecte.Cannot process the request because it is semantically incorrect.
423423 VerrouilléLocked La ressource à laquelle vous accédez est verrouillée.The resource that is being accessed is locked.
429429: Trop de demandes (Too Many Requests)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é.Client application has been throttled and should not attempt to repeat the request until an amount of time has elapsed.
500-500% Erreur interne du serveur (Internal Server Error)Internal Server Error Une erreur du serveur interne s’est produite lors du traitement de la demande.There was an internal server error while processing the request.
501501 Non implémenté (Not Implemented)Not Implemented La fonctionnalité demandée n’est pas implémentée.The requested feature isn’t implemented.
503HTTP 503 Service non disponible (Service Unavailable)Service Unavailable Le service est temporairement indisponible pour maintenance ou est surchargé. Vous pouvez répéter la demande après un délai, dont la longueur peut être spécifiée dans un en-tête Retry-After.The service is temporarily unavailable for maintenance or is overloaded. You may repeat the request after a delay, the length of which may be specified in a Retry-After header.
504504 Dépassement du délai de la passerelle (Gateway Timeout)Gateway Timeout Le serveur, en tant que proxy, n’a pas reçu de réponse du serveur en amont auquel il devait accéder pour tenter d’exécuter la requête. Peut se produire avec 503.The server, while acting as a proxy, did not receive a timely response from the upstream server it needed to access in attempting to complete the request. May occur together with 503.
507507 Stockage insuffisant (Insufficient Storage)Insufficient Storage Le quota de stockage maximum a été atteint.The maximum storage quota has been reached.
509509 Limite de bande passante dépassée (Bandwidth Limit Exceeded)Bandwidth Limit Exceeded 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é.Your app has been throttled for exceeding the maximum bandwidth cap. Your app can retry the request again after more time has elapsed.

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. Voici un exemple de corps d’erreur JSON complet.The error response is a single JSON object that contains a single property named error. This object includes all the details of the error. You can use the information returned here instead of or in addition to the HTTP status code. The following is an example of a full JSON error body.

{
  "error": {
    "code": "invalidRange",
    "message": "Uploaded fragment overlaps with existing data.",
    "innerError": {
      "requestId": "request-id",
      "date": "date-time"
    }
  }
}

Type de ressource d’erreurError resource type

La ressource d’erreur est renvoyée chaque fois qu’une erreur se produit dans le traitement d’une demande.The error resource is returned whenever an error occurs in the processing of a request.

Les réponses d’erreur suivent la définition de la spécification OData v4 pour les réponses d’erreur.Error responses follow the definition in the OData v4 specification for error responses.

Représentation JSONJSON representation

La ressource d’erreur est composée de ces ressources :The error resource is composed of these resources:

{
  "error": { "@odata.type": "odata.error" }  
}

type de ressource odata.errorodata.error resource type

À l’intérieur de la réponse d’erreur se trouve une ressource d’erreur qui inclut les propriétés suivantes :Inside the error response is an error resource that includes the following properties:

{
  "code": "string",
  "message": "string",
  "innererror": { "@odata.type": "odata.error" }
}
Nom de la propriétéProperty name ValeurValue DescriptionDescription\
codecode stringstring Chaîne de code pour l’erreur qui s’est produiteAn error code string for the error that occured
messagemessage stringstring Message ready de développeur sur l’erreur qui s’est produite. Il ne doit pas être affiché pour l’utilisateur directement.A developer ready message about the error that occured. This should not be displayed to the user directly.
innererrorinnererror error objecterror object Facultatif. Objets d’erreur supplémentaires qui peuvent être plus spécifiques que l’erreur de niveau supérieur.Optional. Additional error objects that may be more specific than the top level error.

Propriété du codeCode property

La propriété code contient l’une des valeurs possibles suivantes. Les applications doivent être prêtes à gérer l’une de ces erreurs.The code property contains one of the following possible values. Your apps should be prepared to handle any one of these errors.

CodeCode DescriptionDescription
accessDeniedaccessDenied L’appelant n’est pas autorisé à effectuer l’action.The caller doesn't have permission to perform the action.
activityLimitReachedactivityLimitReached L’application ou l’utilisateur a été limité(e).The app or user has been throttled.
generalExceptiongeneralException Une erreur inconnue s’est produite.An unspecified error has occurred.
invalidRangeinvalidRange La gamme d’octets spécifiée n’est pas valide ou n’est pas disponible.The specified byte range is invalid or unavailable.
invalidRequestinvalidRequest La demande est de format non valide ou incorrecte.The request is malformed or incorrect.
itemNotFounditemNotFound La ressource est introuvable.The resource could not be found.
malwareDetectedmalwareDetected Un programme malveillant a été détecté dans la ressource demandée.Malware was detected in the requested resource.
nameAlreadyExistsnameAlreadyExists Le nom de l’élément spécifié existe déjà.The specified item name already exists.
notAllowednotAllowed L’action n’est pas autorisée par le système.The action is not allowed by the system.
notSupportednotSupported La demande n’est pas prise en charge par le système.The request is not supported by the system.
resourceModifiedresourceModified La ressource mise à jour a changé depuis que l’appelant l’a lue, généralement une discordance eTag.The resource being updated has changed since the caller last read it, usually an eTag mismatch.
resyncRequiredresyncRequired Le jeton delta n’est plus valide et l’application doit rétablir l’état de synchronisation.The delta token is no longer valid, and the app must reset the sync state.
serviceNotAvailableserviceNotAvailable 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.The service is not available. Try the request again after a delay. There may be a Retry-After header.
quotaLimitReachedquotaLimitReached L’utilisateur a atteint sa limite de quota.The user has reached their quota limit.
unauthenticatedunauthenticated L’appelant n’est pas authentifié.The caller is not authenticated.

L’objet innererror peut contenir de manière récursive plus d’objets innererror avec des codes d’erreur supplémentaires, 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.The innererror object might recursively contain more innererror objects with additional, more specific error codes. When handling an error, apps should loop through all the error codes available and use the most detailed one that they understand. Some of the more detailed codes are listed at the bottom of this 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 :To verify that an error object is an error you are expecting, you must loop over the innererror objects, looking for the error codes you expect. For example:

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

Pour un exemple de gestion correcte des erreurs, voir Gestion des codes d’erreur.For an example that shows how to properly handle errors, see Error Code Handling.

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 s’articuler autour des valeurs message, car elles peuvent changer à tout moment et elles contiennent souvent des informations dynamiques spécifiques de la demande ayant échoué. Vous devez coder uniquement par rapport aux codes d’erreur renvoyés dans les propriétés code.The message property at the root contains an error message intended for the developer to read. Error messages are not localized and shouldn't be displayed directly to the user. When handling errors, your code should not key off of message values because they can change at any time, and they often contain dynamic information specific to the failed request. You should only code against error codes returned in code properties.

Codes d’erreur détaillésDetailed error codes

Vous trouverez ci-dessous quelques erreurs supplémentaires que votre application peut rencontrer à l’intérieur des objets innererror imbriqués. Les applications ne sont pas requises pour les gérer mais elles le peuvent, le cas échéant. Le service peut ajouter de nouveaux codes d’erreur ou cesser de renvoyer d’anciens codes à tout moment. Il est donc important que toutes les applications soient en mesure de gérer les codes d’erreur de base.The following are some additional errors that your app might encounter within the nested innererror objects. Apps are not required to handle these, but can if they choose. The service might add new error codes or stop returning old ones at any time, so it is important that all apps be able to handle the basic error codes.

CodeCode DescriptionDescription
accessRestrictedaccessRestricted L’accès est limité au propriétaire de l’élément.Access restricted to the item's owner.
cannotSnapshotTreecannotSnapshotTree Impossible d’obtenir un instantané delta cohérent. Essayez à nouveau ultérieurement.Failed to get a consistent delta snapshot. Try again later.
childItemCountExceededchildItemCountExceeded La limite maximale du nombre d’éléments enfants a été atteinte.Max limit on the number of child items was reached.
entityTagDoesNotMatchentityTagDoesNotMatch ETag ne correspond pas à la valeur de l’élément actuelle.ETag does not match the current item's value.
fragmentLengthMismatchfragmentLengthMismatch La taille totale déclarée pour ce fragment est différente de celle de la session de téléchargement.Declared total size for this fragment is different from that of the upload session.
fragmentOutOfOrderfragmentOutOfOrder Le fragment téléchargé ne fonctionne pas.Uploaded fragment is out of order.
fragmentOverlapfragmentOverlap Le fragment téléchargé remplace les données existantes.Uploaded fragment overlaps with existing data.
invalidAcceptTypeinvalidAcceptType Type d’acceptation non valide.Invalid accept type.
invalidParameterFormatinvalidParameterFormat Format de paramètre non valide.Invalid parameter format.
invalidPathinvalidPath Le nom contient des caractères non valides.Name contains invalid characters.
invalidQueryOptioninvalidQueryOption Option de requête non valide.Invalid query option.
invalidStartIndexinvalidStartIndex Index de début non valide.Invalid start index.
lockMismatchlockMismatch Le jeton de verrouillage ne correspond pas au verrouillage existant.Lock token does not match existing lock.
lockNotFoundOrAlreadyExpiredlockNotFoundOrAlreadyExpired Il n’existe actuellement aucun verrou non expiré sur l’élément.There is currently no unexpired lock on the item.
lockOwnerMismatchlockOwnerMismatch L’ID du propriétaire du verrouillage ne correspond pas à l’ID fourni.Lock Owner ID does not match provided ID.
malformedEntityTagmalformedEntityTag Le format de l’en-tête ETag est incorrect. Les en-têtes ETag doivent être des chaînes entre guillemets.ETag header is malformed. ETags must be quoted strings.
maxDocumentCountExceededmaxDocumentCountExceeded La limite maximale sur le nombre de documents est atteinte.Max limit on number of Documents is reached.
maxFileSizeExceededmaxFileSizeExceeded La taille maximale du fichier est dépassée.Max file size exceeded.
maxFolderCountExceededmaxFolderCountExceeded La limite maximale sur le nombre de dossiers est atteinte.Max limit on number of Folders is reached.
maxFragmentLengthExceededmaxFragmentLengthExceeded La taille maximale du fichier est dépassée.Max file size exceeded.
maxItemCountExceededmaxItemCountExceeded La limite maximale sur le nombre d’éléments est atteinte.Max limit on number of Items is reached.
maxQueryLengthExceededmaxQueryLengthExceeded La longueur de requête maximale est dépassée.Max query length exceeded.
maxStreamSizeExceededmaxStreamSizeExceeded La taille maximale de flux est dépassée.Maximum stream size exceeded.
parameterIsTooLongparameterIsTooLong La longueur maximale du paramètre est dépassée.Parameter Exceeds Maximum Length.
parameterIsTooSmallparameterIsTooSmall Le paramètre est inférieur à la valeur minimale.Parameter is smaller then minimum value.
pathIsTooLongpathIsTooLong Le chemin d’accès dépasse la longueur maximale.Path exceeds maximum length.
pathTooDeeppathTooDeep La limite de profondeur de hiérarchie de dossier est atteinte.Folder hierarchy depth limit reached.
propertyNotUpdateablepropertyNotUpdateable La propriété ne peut pas être mise à jour.Property not updateable.
resyncApplyDifferencesresyncApplyDifferences 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.Resync required. Replace any local items with the server's version (including deletes) if you're sure that the service was up to date with your local changes when you last sync'd. Upload any local changes that the server doesn't know about.
resyncRequiredresyncRequired La resynchronisation est requise.Resync is required.
resyncUploadDifferencesresyncUploadDifferences 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).Resync required. Upload any local items that the service did not return, and upload any files that differ from the server's version (keeping both copies if you're not sure which one is more up-to-date).
serviceNotAvailableserviceNotAvailable Le serveur ne peut pas traiter la demande actuelle.The server is unable to process the current request.
serviceReadOnlyserviceReadOnly La ressource est temporairement en lecture seule.Resource is temporarily read-only.
throttledRequestthrottledRequest Trop de demandes.Too many requests.
tooManyResultsRequestedtooManyResultsRequested Trop de résultats demandés.Too many results requested.
tooManyTermsInQuerytooManyTermsInQuery Trop de termes dans la requête.Too many terms in the query.
totalAffectedItemCountExceededtotalAffectedItemCountExceeded L’opération n’est pas autorisée, car le nombre d’éléments concernés dépasse le seuil.Operation is not allowed because the number of affected items exceeds threshold.
truncationNotAllowedtruncationNotAllowed La troncation des données n’est pas autorisée.Data truncation is not allowed.
uploadSessionFaileduploadSessionFailed La session de téléchargement a échoué.Upload session failed.
uploadSessionIncompleteuploadSessionIncomplete La session de téléchargement est incomplète.Upload session incomplete.
uploadSessionNotFounduploadSessionNotFound Session de téléchargement introuvable.Upload session not found.
virusSuspiciousvirusSuspicious Ce document est suspect et contient peut-être un virus.This document is suspicious and may have a virus.
zeroOrFewerResultsRequestedzeroOrFewerResultsRequested Zéro résultat ou moins demandés.Zero or fewer results requested.