Códigos y respuestas de error comunes

Los errores en la API de OneDrive se devuelven usando los códigos de estado HTTP estándar, así como un objeto de respuesta de error JSON. Deberían esperarse los siguientes códigos de estado HTTP.

Código de estado Mensaje de estado Descripción
400 Solicitud incorrecta (Bad Request) No se puede procesar la solicitud porque es incorrecta o tiene un formato no válido.
401 No autorizado (Unauthorized) La información de autenticación requerida no se encuentra o no es válida para el recurso.
403 Prohibido Se denegó el acceso al recurso solicitado. Puede que el usuario no tenga permisos suficientes.
404 No encontrado (Not Found) El recurso solicitado no existe.
405 Método no permitido (Method Not Allowed) No se permite el método HTTP de la solicitud en el recurso.
406 No es aceptable (Not Acceptable) Este servicio no es compatible con el formato solicitado en el encabezado Accept.
409 Conflict El estado actual entra en conflicto con lo que la solicitud espera. Por ejemplo, la carpeta principal especificada podría no existir.
410 Pasado (Gone) El recurso solicitado ya no está disponible en el servidor.
411 Longitud requerida (Length Required) Se requiere un encabezado Content-Length en la solicitud.
412 Error de condición previa (Precondition Failed) Una condición previa proporcionada en la solicitud (por ejemplo, un encabezado if-match) no coincide con el estado actual del recurso.
413 Entidad de solicitud demasiado grande (Request Entity Too Large) El tamaño de la solicitud supera el límite máximo.
415 Tipo de medio no compatible (Unsupported Media Type) El tipo de contenido de la solicitud es un formato que no es compatible con el servicio.
416 El rango solicitado no se cumple (Requested Range Not Satisfiable) El rango de bytes especificado no es válido o no está disponible.
422 Entidad no procesable (Unprocessable Entity) No se puede procesar la solicitud porque es semánticamente incorrecta.
429 Demasiadas solicitudes (Too Many Requests) La aplicación del cliente se ha limitado y no debería intentar repetir la solicitud hasta haya transcurrido un periodo de tiempo.
500 Error interno del servidor (Internal Server Error) Se produjo un error interno del servidor al procesar la solicitud.
501 No implementado (Not Implemented) La característica solicitada no se implementó.
503 Servicio no disponible El servicio no está disponible temporalmente. Puede repetir la solicitud después de un retraso. Puede haber un encabezado Retry-After.
507 Almacenamiento insuficiente (Insufficient Storage) Se ha alcanzado la cuota de almacenamiento máxima.
509 Ha superado el límite de ancho de banda Su aplicación se ha limitado por superar el extremo máximo de ancho de banda. Su aplicación puede reintentar la solicitud de nuevo cuando haya transcurrido más tiempo.

La respuesta de error es un solo objeto JSON que contiene una propiedad única denominada error. Este objeto incluye todos los detalles del error. Puede usar la información devuelta aquí en lugar de o además del código de estado HTTP devuelto. Aquí se muestra un ejemplo de un cuerpo completo de error JSON.

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

La propiedad del código

La propiedad code contiene uno de los 15 valores posibles. Sus aplicaciones deben estar preparadas para controlar cualquiera de estos errores.

Código Descripción
accessDenied El autor de la llamada no tiene permiso para realizar la acción.
activityLimitReached Se ha limitado la aplicación o el usuario.
generalException Se ha producido un error no especificado.
invalidRange El rango de bytes especificado no es válido o no está disponible.
invalidRequest La solicitud es incorrecta o tiene un formato no válido.
itemNotFound No se pudo encontrar el recurso.
malwareDetected Se detectó malware en el recurso solicitado.
nameAlreadyExists El nombre del elemento especificado ya existe.
notAllowed El sistema no permite esta acción.
notSupported La solicitud no es compatible con el sistema.
resourceModified El recurso que está siendo actualizado ha cambiado desde que el autor de llamada lo leyó la última vez, normalmente un error de coincidencia eTag.
resyncRequired El token delta ya no es válido, y la aplicación debe restablecer el estado de sincronización.
serviceNotAvailable El servicio no está disponible. Intente la solicitud de nuevo tras un retraso. Puede haber un encabezado Retry-After.
quotaLimitReached El usuario ha alcanzado su límite de cuota.
no autenticado El autor de la llamada no está autenticado.

El objeto innererror puede contener de manera recursiva más objetos innererror con códigos de error adicionales y más concretos. Al controlar un error, las aplicaciones deben recorrer todos los códigos de error disponibles y usar el más detallado que comprendan. Algunos de los códigos más detallados se enumeran en la parte inferior de esta página.

Para comprobar que un objeto de error es un error que está esperando, debe recorrer los objetos innererror, buscando los códigos de error que espera. Por ejemplo:

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

Para obtener un ejemplo completo de errores que se controlan correctamente, vea OneDrive Error Code Handling (Controlar códigos de error en OneDrive).

La propiedad message en la raíz contiene un mensaje de error destinado a que el desarrollador lo lea. Los mensajes de error no están localizados y no deberían mostrarse directamente al usuario. Al tratar los errores, el código no debería desconectarse de los valores message porque pueden cambiar en cualquier momento y, a menudo, contienen información dinámica específica de la solicitud de error. Solo debería codificar en los códigos de error que se devuelvan en las propiedades de code.

Para obtener más información sobre el recurso devuelto en la respuesta de error, vea el tema Error resource type (Tipo de recurso de error).

Códigos de error detallados

A continuación, se muestran algunos errores adicionales que su aplicación puede encontrarse dentro de los objetos innererror anidados. Las aplicaciones no necesitan controlarlos, pero pueden hacerlo si quieren. El servicio puede agregar nuevos códigos de error o dejar de devolver los antiguos en cualquier momento, por lo que es importante que todas las aplicaciones puedan controlar los 15 anteriores básicos.

Código Descripción
accessRestricted Acceso restringido para el propietario del elemento.
cannotSnapshotTree No se pudo obtener ninguna instantánea delta coherente. Inténtelo de nuevo más tarde.
childItemCountExceeded Se ha alcanzado el límite máximo del número de elementos secundarios.
entityTagDoesNotMatch La ETag no coincide con el valor del elemento actual.
fragmentLengthMismatch El tamaño total declarado para este fragmento es distinto del de la sesión de carga.
fragmentOutOfOrder El fragmento cargado está fuera de servicio.
fragmentOverlap El fragmento cargado se superpone a los datos existentes.
invalidAcceptType Tipo de aceptación no válido.
invalidParameterFormat Formato de parámetro no válido.
invalidPath El nombre contiene caracteres no válidos.
invalidQueryOption Opción de consulta no válida.
invalidStartIndex Índice de inicio no válido.
lockMismatch El token de bloqueo no coincide con el bloqueo existente.
lockNotFoundOrAlreadyExpired Actualmente no hay ningún bloqueo no caducado en el elemento.
lockOwnerMismatch El Id. del propietario de bloqueo no coincide con el Id. proporcionado.
malformedEntityTag El encabezado ETag tiene un formato no válido. Las ETags deben ser cadenas entre comillas.
maxDocumentCountExceeded Se ha alcanzado el límite máximo del número de documentos.
maxFileSizeExceeded Tamaño máximo de archivo excedido.
maxFolderCountExceeded Se ha alcanzado el límite máximo del número de carpetas.
maxFragmentLengthExceeded Tamaño máximo de archivo excedido.
maxItemCountExceeded Se ha alcanzado el límite máximo de número de elementos.
maxQueryLengthExceeded Se ha superado la longitud de consulta máxima.
maxStreamSizeExceeded Se ha superado el tamaño máximo de secuencia.
parameterIsTooLong El parámetro supera la longitud máxima.
parameterIsTooSmall El parámetro es inferior al valor mínimo.
pathIsTooLong La ruta de acceso supera la longitud máxima.
pathTooDeep Se ha alcanzado el límite de profundidad de la jerarquía de carpetas.
propertyNotUpdateable No se puede actualizar la propiedad.
resyncApplyDifferences Es necesario volver a sincronizar. Reemplace cualquier elemento local con la versión del servidor (incluyendo eliminaciones) si está seguro de que el servicio estaba actualizado con sus cambios locales cuando lo sincronizó por última vez. Cargar cualquier cambio local que no conoce el servidor.
resyncRequired Es necesario volver a sincronizar.
resyncUploadDifferences Es necesario volver a sincronizar. Cargue cualquier elemento local que el servicio no devolvió y cargue cualquier archivo que difiera de la versión del servidor (mantenga ambas copias si no está seguro de cuál está más actualizada).
serviceNotAvailable El servidor no puede procesar la solicitud actual.
serviceReadOnly El recurso es temporalmente de solo lectura.
throttledRequest Demasiadas solicitudes.
tooManyResultsRequested Demasiados resultados solicitados.
tooManyTermsInQuery Demasiados términos en la consulta.
totalAffectedItemCountExceeded No se permite la operación porque el número de elementos afectados supera el umbral.
truncationNotAllowed No se permite el truncamiento de datos.
uploadSessionFailed Error de la sesión de carga.
uploadSessionIncomplete Sesión de carga incompleta.
uploadSessionNotFound Sesión de carga no encontrada.
virusSuspicious Este documento es sospechoso y puede tener un virus.
zeroOrFewerResultsRequested Cero o menos resultados solicitados.