Стандартные отклики и коды ошибокCommon error responses and codes

Для возвращения ошибок в API OneDrive используются стандартные коды состояния HTTP, а также объект ответа с ошибкой JSON. В ответах могут быть возвращены указанные ниже коды состояния HTTP.Errors in the OneDrive API are returned using standard HTTP status codes, as well as a JSON error response object. The following HTTP status codes should be expected.

Код состоянияStatus code Сообщение о состоянииStatus message ОписаниеDescription
4004.0.0 Неправильный запрос (Bad Request)Bad Request Не удается обработать запрос, так как он имеет неправильный формат или содержит ошибку.Cannot process the request because it is malformed or incorrect.
401401 Не авторизован (Unauthorized)Unauthorized Требуемые сведения о проверке подлинности отсутствуют или недопустимы для ресурса.Required authentication information is either missing or not valid for the resource.
403403 Forbidden Запрещено (Forbidden)Forbidden Доступ к запрошенному ресурсу запрещен. Возможно, у пользователя недостаточно разрешений.Access is denied to the requested resource. The user might not have enough permission.
404404 errors Не найдено (Not Found)Not Found Запрашиваемый ресурс не существует.The requested resource doesn’t exist.
405405 Недопустимый метод (Method Not Allowed)Method Not Allowed Метод HTTP в запросе недопустим для ресурса.The HTTP method in the request is not allowed on the resource.
406406 Неприемлемо (Not Acceptable)Not Acceptable Эта служба не поддерживает формат, запрошенный в заголовке Accept.This service doesn’t support the format requested in the Accept header.
409409 Конфликт (Conflict)Conflict Текущее состояние противоречит ожидаемым результатам запроса. Например, может отсутствовать указанная родительская папка.The current state conflicts with what the request expects. For example, the specified parent folder might not exist.
4104.10 Отсутствует (Gone)Gone Запрошенный ресурс недоступен на сервере.The requested resource is no longer available at the server.
4114-11 Требуется длина (Length Required)Length Required В запросе нужно указать заголовок Content-Length.A Content-Length header is required on the request.
4124.12 Необходимое условие не выполнено (Precondition Failed)Precondition Failed Необходимое условие, указанное в запросе (например, заголовок If-Match), не соответствует текущему состоянию ресурса.A precondition provided in the request (such as an if-match header) does not match the resource's current state.
4134.13 Слишком большой объект запроса (Request Entity Too Large)Request Entity Too Large Размер запроса превышает максимальное значение.The request size exceeds the maximum limit.
4154.15 Неподдерживаемый тип носителя (Unsupported Media Type)Unsupported Media Type Тип содержимого запроса имеет формат, который не поддерживает служба.The content type of the request is a format that is not supported by the service.
4164.16 Запрошенный диапазон невыполним (Requested Range Not Satisfiable)Requested Range Not Satisfiable Указан недопустимый или недоступный диапазон байтов.The specified byte range is invalid or unavailable.
422422 Необрабатываемый объект (Unprocessable Entity)Unprocessable Entity Не удается обработать запрос из-за неправильной семантики.Cannot process the request because it is semantically incorrect.
429429: Слишком много запросов (Too Many Requests)Too Many Requests Количество запросов клиентского приложения отрегулировано, оно сможет повторить запрос по истечении некоторого времени.Client application has been throttled and should not attempt to repeat the request until an amount of time has elapsed.
500-500% Внутренняя ошибка сервера (Internal Server Error)Internal Server Error При обработке запроса возникла внутренняя ошибка сервера.There was an internal server error while processing the request.
501501 Не реализовано (Not Implemented)Not Implemented Запрашиваемая функция не реализована.The requested feature isn’t implemented.
503503 Служба недоступнаService Unavailable Служба временно недоступна. Запрос можно повторить через некоторое время. Возможно, существует заголовок Retry-After.The service is temporarily unavailable. You may repeat the request after a delay. There may be a Retry-After header.
507507 Недостаточно места (Insufficient Storage)Insufficient Storage Достигнута максимальная квота хранилища.The maximum storage quota has been reached.
509509 Превышено ограничение пропускной способности (Bandwidth Limit Exceeded)Bandwidth Limit Exceeded Пропускная способность приложения отрегулирована из-за превышения максимально допустимой пропускной способности. Приложение сможет повторить запрос по истечении некоторого времени.Your app has been throttled for exceeding the maximum bandwidth cap. Your app can retry the request again after more time has elapsed.

Ошибка представляет собой один объект JSON, содержащий одно свойство с именем error. Этот объект включает все сведения об ошибке. Вы можете использовать возвращенные сведения вместо полученного кода состояния HTTP или вместе с ним. Вот пример полного текста ошибки JSON.The error response is a single JSON object that contains a single property named error. This object includes all of the details of the error. You may use the information returned here instead of, or in addition to the HTTP status code returned. Here is an example of a full JSON error body.

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

Свойство codeThe code property

Свойство code содержит одно из 15 возможных значений. Ваше приложение должно быть способно обработать любую из этих ошибок.The code property contains one of 15 possible values. Your apps must be prepared to handle any one of these errors.

CodeCode ОписаниеDescription
accessDeniedaccessDenied У вызывающей стороны нет разрешения на выполнение действия.The caller doesn't have permission to perform the action.
activityLimitReachedactivityLimitReached Действия приложения или пользователя превысили ограничения.The app or user has been throttled.
generalExceptiongeneralException Произошла неуказанная ошибка.An unspecified error has occurred.
invalidRangeinvalidRange Указан недопустимый или недоступный диапазон байтов.The specified byte range is invalid or unavailable.
invalidRequestinvalidRequest Запрос имеет неправильный формат или содержит ошибку.The request is malformed or incorrect.
itemNotFounditemNotFound Не удалось найти ресурс.The resource could not be found.
malwareDetectedmalwareDetected В запрошенном ресурсе обнаружена вредоносная программа.Malware was detected in the requested resource.
nameAlreadyExistsnameAlreadyExists Элемент с указанным именем уже существует.The specified item name already exists.
notAllowednotAllowed Действие запрещено системой.The action is not allowed by the system.
notSupportednotSupported Запрос не поддерживается в системе.The request is not supported by the system.
resourceModifiedresourceModified Обновляемый ресурс изменился с момента последнего чтения вызывающей стороной. Как правило, не совпадают теги eTag.The resource being updated has changed since the caller last read it, usually an eTag mismatch.
resyncRequiredresyncRequired Разностный токен больше не действителен, а приложение должно сбросить состояние синхронизации.The delta token is no longer valid, and the app must reset the sync state.
serviceNotAvailableserviceNotAvailable Служба недоступна. Повторите запрос через некоторое время. Возможно, существует заголовок Retry-After.The service is not available. Try the request again after a delay. There may be a Retry-After header.
quotaLimitReachedquotaLimitReached Пользователь превысил квоту.The user has reached their quota limit.
unauthenticatedunauthenticated Вызывающий объект не прошел аутентификацию.The caller is not authenticated.

Объект innererror может рекурсивно содержать большее количество объектов innererror с дополнительными более конкретными кодами ошибок. Обрабатывая ошибку, приложения должны перебирать все доступные коды ошибок и использовать самую подробную и понятную. В конце этой страницы приведено несколько более подробных кодов.The innererror object may 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.

Чтобы убедиться, что объект ошибки представляет собой ожидаемую ошибку, необходимо перебрать объекты innererror и найти ожидаемые коды ошибок. Например: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;
}

Полный пример правильной обработки ошибок см. в статье Обработка кодов ошибок в OneDrive.For a complete example for properly handling errors, take a look at OneDrive Error Code Handling.

Свойство message в корне содержит сообщение об ошибке, предназначенное для разработчика. Сообщения об ошибках не локализованы и не предназначены для пользователя. Приложение не должно обрабатывать значения message, так как они могут измениться в любое время и часто содержат динамические сведения, связанные с неудачным запросом. Приложение должно обрабатывать только те коды ошибок, которые возвращаются в свойствах 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.

Дополнительные сведения о ресурсе, возвращаемом в ответе с ошибкой, см. в статье Тип ресурса Error.For more information on the resource returned in the error response, see the Error resource type topic.

Подробные коды ошибокDetailed error codes

Ниже указаны дополнительные ошибки, с которыми может столкнуться ваше приложение во вложенных объектах innererror. Приложениям необязательно обрабатывать их, но при необходимости они могут делать это. Служба в любое время может добавить новые коды ошибок или прекратить возвращать какие-либо старые коды, поэтому важно, чтобы все приложения могли обрабатывать 15 указанных выше базовых кодов.Below are some additional errors that your app may encounter within the nested innererror objects. Apps are not required to handle these, but may if they choose. The service may 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 15 above.

CodeCode ОписаниеDescription
accessRestrictedaccessRestricted Доступ разрешен только владельцу элемента.Access restricted to the item's owner.
cannotSnapshotTreecannotSnapshotTree Не удалось получить согласованный разностный моментальный снимок. Повторите попытку позже.Failed to get a consistent delta snapshot. Try again later.
childItemCountExceededchildItemCountExceeded Достигнуто максимальное количество дочерних элементов.Max limit on the number of child items was reached.
entityTagDoesNotMatchentityTagDoesNotMatch Тег ETag не соответствует текущему значению элемента.ETag does not match the current item's value.
fragmentLengthMismatchfragmentLengthMismatch Объявленный общий размер этого фрагмента отличается от размера сеанса отправки.Declared total size for this fragment is different from that of the upload session.
fragmentOutOfOrderfragmentOutOfOrder Фрагмент передан не по порядку.Uploaded fragment is out of order.
fragmentOverlapfragmentOverlap Переданный фрагмент перекрывает существующие данные.Uploaded fragment overlaps with existing data.
invalidAcceptTypeinvalidAcceptType Недопустимый тип входных данных.Invalid accept type.
invalidParameterFormatinvalidParameterFormat Недопустимый формат параметра.Invalid parameter format.
invalidPathinvalidPath Имя содержит недопустимые символы.Name contains invalid characters.
invalidQueryOptioninvalidQueryOption Недопустимый параметр запроса.Invalid query option.
invalidStartIndexinvalidStartIndex Недопустимый начальный индекс.Invalid start index.
lockMismatchlockMismatch Маркер блокировки не соответствует существующей блокировке.Lock token does not match existing lock.
lockNotFoundOrAlreadyExpiredlockNotFoundOrAlreadyExpired В данный момент для элемента не задана действительная блокировка.There is currently no unexpired lock on the item.
lockOwnerMismatchlockOwnerMismatch Идентификатор владельца блокировки не соответствует указанному идентификатору.Lock Owner ID does not match provided ID.
malformedEntityTagmalformedEntityTag Неправильный формат заголовка тега ETag. Теги ETag должны представлять собой строки, заключенные в кавычки.ETag header is malformed. ETags must be quoted strings.
maxDocumentCountExceededmaxDocumentCountExceeded Достигнуто максимальное количество документов.Max limit on number of Documents is reached.
maxFileSizeExceededmaxFileSizeExceeded Превышен максимальный размер файла.Max file size exceeded.
maxFolderCountExceededmaxFolderCountExceeded Достигнуто максимальное количество папок.Max limit on number of Folders is reached.
maxFragmentLengthExceededmaxFragmentLengthExceeded Превышен максимальный размер файла.Max file size exceeded.
maxItemCountExceededmaxItemCountExceeded Достигнуто максимальное количество элементов.Max limit on number of Items is reached.
maxQueryLengthExceededmaxQueryLengthExceeded Превышена максимальная длина запроса.Max query length exceeded.
maxStreamSizeExceededmaxStreamSizeExceeded Превышен максимальный размер потока.Maximum stream size exceeded.
parameterIsTooLongparameterIsTooLong Превышена максимальная длина параметра.Parameter Exceeds Maximum Length.
parameterIsTooSmallparameterIsTooSmall Размер параметра меньше минимального значения.Parameter is smaller then minimum value.
pathIsTooLongpathIsTooLong Превышена максимальная длина пути.Path exceeds maximum length.
pathTooDeeppathTooDeep Достигнуто максимальное число уровней в иерархии папок.Folder hierarchy depth limit reached.
propertyNotUpdateablepropertyNotUpdateable Свойство не поддерживает обновление.Property not updateable.
resyncApplyDifferencesresyncApplyDifferences Требуется повторная синхронизация. Замените все локальные элементы элементами сервера (в том числе удаленные), если вы уверены, что в службу были внесены все локальные изменения при последней синхронизации. Отправьте все локальные изменения, не загруженные на сервер.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 Требуется повторная синхронизация.Resync is required.
resyncUploadDifferencesresyncUploadDifferences Требуется повторная синхронизация. Отправьте все локальные элементы, которые не возвратила служба, и все файлы, версия которых отличается от версии сервера (сохраняйте обе копии, если вы не знаете, какая из них более актуальна).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 Сервер не может обработать текущий запрос.The server is unable to process the current request.
serviceReadOnlyserviceReadOnly Ресурс временно доступен только для чтения.Resource is temporarily read-only.
throttledRequestthrottledRequest Слишком много запросов.Too many requests.
tooManyResultsRequestedtooManyResultsRequested Запрошено слишком много результатов.Too many results requested.
tooManyTermsInQuerytooManyTermsInQuery Запрос содержит слишком много условий.Too many terms in the query.
totalAffectedItemCountExceededtotalAffectedItemCountExceeded Операция запрещена, так как количество задействованных элементов превышает пороговое значение.Operation is not allowed because the number of affected items exceeds threshold.
truncationNotAllowedtruncationNotAllowed Усечение данных запрещено.Data truncation is not allowed.
uploadSessionFaileduploadSessionFailed Ошибка сеанса отправки.Upload session failed.
uploadSessionIncompleteuploadSessionIncomplete Сеанс отправки не завершен.Upload session incomplete.
uploadSessionNotFounduploadSessionNotFound Сеанс отправки не найден.Upload session not found.
virusSuspiciousvirusSuspicious Этот документ подозрительный и может содержать вирус.This document is suspicious and may have a virus.
zeroOrFewerResultsRequestedzeroOrFewerResultsRequested Запрошено ноль или меньше результатов.Zero or fewer results requested.