Códigos e respostas de erro comuns
Os erros na API do OneDrive serão retornados por meio de códigos de status HTTP padrão, bem como um objeto de resposta de erro JSON. Os códigos de status HTTP a seguir devem ser esperados.
Código de status | Mensagem de status | Descrição |
---|---|---|
400 | Solicitação Incorreta (Bad Request) | Não é possível processar a solicitação porque está incorreta ou mal feita. |
401 | Não Autorizado (Unauthorized) | As informações de autenticação necessárias estão ausentes ou não são válidas para o recurso. |
403 | Proibido | Acesso negado ao recurso solicitado. O usuário pode não ter permissão suficiente. |
404 | Não Encontrado (Not Found) | O recurso solicitado não existe. |
405 | Método Não Permitido (Method Not Allowed) | O método HTTP na solicitação não é permitido no recurso. |
406 | Não Aceitável (Not Acceptable) | Esse serviço não dá suporte ao formato solicitado no cabeçalho Accept. |
409 | Conflito | O estado atual está em conflito com o que a solicitação espera. Por exemplo, a pasta pai especificada não existe. |
410 | Sumiu (Gone) | O recurso solicitado não está mais disponível no servidor. |
411 | Comprimento Solicitado (Length Required) | É necessário um cabeçalho Content-Length na solicitação. |
412 | Falha na Pré-condição (Precondition Failed) | Uma pré-condição fornecida na solicitação (como um cabeçalho if-match) não corresponde ao estado atual do recurso. |
413 | Entidade de Solicitação Muito Grande (Request Entity Too Large) | O tamanho da solicitação excede o limite máximo. |
415 | Tipo de Mídia Não Suportado (Unsupported Media Type) | O tipo de conteúdo da solicitação é um formato sem suporte pelo serviço. |
416 | Intervalo Solicitado Não Satisfatório (Requested Range Not Satisfiable) | O intervalo de bytes especificado é inválido ou está indisponível. |
422 | Entidade Não Processável (Unprocessable Entity) | Não é possível processar a solicitação porque ela está semanticamente incorreta. |
429 | Muitos Pedidos (Too Many Requests) | O aplicativo cliente foi restringido e não deve tentar repetir a solicitação antes de determinado intervalo de tempo. |
500 | Erro Interno do Servidor (Internal Server Error) | Ocorreu um erro interno do servidor ao processar a solicitação. |
501 | Não Implementado (Not Implemented) | O recurso solicitado não foi implementado. |
503 | Serviço Indisponível | O serviço está temporariamente indisponível. Você pode repetir a solicitação depois de um atraso. Pode haver um cabeçalho Retry-After |
507 | Armazenamento Insuficiente (Insufficient Storage) | A cota máxima de armazenamento foi atingida. |
509 | Limite de Largura de Banda Excedido | Seu aplicativo foi limitado por exceder o limite máximo de largura de banda. O aplicativo pode tentar a solicitação novamente depois de decorrido algum tempo. |
A resposta de erro é um único objeto JSON que contém uma propriedade única chamada error. Esse objeto inclui todos os detalhes do erro. Você pode usar as informações retornadas aqui em vez de ou além do código de status HTTP retornado. Aqui está um exemplo de um corpo de erro JSON completo.
{
"error": {
"code": "invalidRange",
"message": "Uploaded fragment overlaps with existing data.",
"innererror": {
"code": "fragmentOverlap"
}
}
}
A propriedade de código
A propriedade code
contém um dos 15 valores possíveis. Os aplicativos devem estar preparados para lidar com qualquer um desses erros.
Código | Descrição |
---|---|
accessDenied | O chamador não tem permissão para executar a ação. |
activityLimitReached | O aplicativo ou o usuário foi restringido. |
generalException | Ocorreu um erro não especificado. |
invalidRange | O intervalo de bytes especificado é inválido ou está indisponível. |
invalidRequest | A solicitação está incorreta ou foi mal formada. |
itemNotFound | Não foi possível localizar o recurso. |
malwareDetected | Malware detectado no recurso solicitado. |
nameAlreadyExists | O nome do item especificado já existe. |
notAllowed | A ação não é permitida pelo sistema. |
notSupported | A solicitação não tem suporte do sistema. |
resourceModified | O recurso em atualização foi alterado desde que o chamador o leu pela última vez, geralmente uma incompatibilidade de eTag. |
resyncRequired | O token delta não é mais válido e o aplicativo deve redefinir o estado de sincronização. |
serviceNotAvailable | O serviço não está disponível. Tente fazer a solicitação novamente após um atraso. Pode haver um cabeçalho Retry-After |
quotaLimitReached | O usuário atingiu seu limite de cota. |
unauthenticated | O chamador não está autenticado. |
O objeto innererror
pode conter repetidamente mais objetos innererror
com códigos de erro adicionais, mais específicos. Ao lidar com um erro, os aplicativos devem percorrer todos os códigos de erro disponíveis e usar o mais detalhado que consigam entender. Alguns dos códigos mais detalhados estão listados na parte inferior desta página.
Para verificar se um objeto de erro é um erro que você está esperando, execute um loop sobre os objetos innererror
procurando os códigos de erro que você espera. Por exemplo:
public bool IsError(string expectedErrorCode)
{
OneDriveInnerError errorCode = this.Error;
while (null != errorCode)
{
if (errorCode.Code == expectedErrorCode)
return true;
errorCode = errorCode.InnerError;
}
return false;
}
Confira um exemplo completo de como lidar com erros adequadamente em Tratamento de códigos de erro do OneDrive.
A propriedade message
na raiz contém uma mensagem de erro destinada ao desenvolvedor. As mensagens de erro não são localizadas e não devem ser exibidas diretamente para o usuário. Ao tratar de erros, seu código não deve desviar dos valores message
porque eles podem mudar a qualquer momento e geralmente contêm informações dinâmicas específicas para a solicitação com falha. Você só deve escrever códigos contra códigos de erro retornados nas propriedades code
.
Confira mais informações sobre o recurso retornado na resposta de erro no tópico Tipo de recurso de erro.
Códigos de erro detalhados
A seguir estão alguns erros adicionais que seu aplicativo pode encontrar nos objetos aninhados innererror
. Os aplicativos não são obrigados a tratar deles, mas podem, se quiserem. O serviço pode adicionar novos códigos de erro ou parar de retornar os antigos a qualquer hora; portanto, é importante que todos os aplicativos consigam tratar dos 15 básicos acima.
Código | Descrição |
---|---|
accessRestricted | Acesso restrito ao proprietário do item. |
cannotSnapshotTree | Falha ao obter um instantâneo delta consistente. Tente novamente mais tarde. |
childItemCountExceeded | Limite máximo do número de itens filhos atingido. |
entityTagDoesNotMatch | ETag não corresponde ao valor do item atual. |
fragmentLengthMismatch | O tamanho total declarado para esse fragmento é diferente do da sessão de carregamento. |
fragmentOutOfOrder | O fragmento carregado está fora da ordem. |
fragmentOverlap | Fragmento carregado sobrepõe-se a dados existentes. |
invalidAcceptType | Tipo de aceitação inválido. |
invalidParameterFormat | Formato de parâmetro inválido. |
invalidPath | O nome contém caracteres inválidos. |
invalidQueryOption | Opção de consulta inválida. |
invalidStartIndex | Índice de início inválido. |
lockMismatch | O token de bloqueio não corresponde ao bloqueio existente. |
lockNotFoundOrAlreadyExpired | Não há atualmente nenhum bloqueio expirado no item. |
lockOwnerMismatch | A ID do proprietário do bloqueio não corresponde à ID fornecida. |
malformedEntityTag | O Cabeçalho ETag está mal feito. ETags devem ser cadeias de caracteres entre aspas. |
maxDocumentCountExceeded | Atingido o limite máximo do número de documentos. |
maxFileSizeExceeded | Tamanho máximo do arquivo excedido. |
maxFolderCountExceeded | Atingido o limite máximo do número de pastas. |
maxFragmentLengthExceeded | Tamanho máximo do arquivo excedido. |
maxItemCountExceeded | Limite máximo do número de itens atingido. |
maxQueryLengthExceeded | Comprimento máximo de consulta excedido. |
maxStreamSizeExceeded | Tamanho máximo de fluxo excedido. |
parameterIsTooLong | Parâmetro excede o comprimento máximo. |
parameterIsTooSmall | Parâmetro é menor que o valor mínimo. |
pathIsTooLong | O caminho excede o comprimento máximo. |
pathTooDeep | Atingido o limite de profundidade da hierarquia de pastas. |
propertyNotUpdateable | Propriedade não atualizável. |
resyncApplyDifferences | Nova sincronização necessária. Substitua todos os itens locais com a versão do servidor (incluindo exclusões) se você tiver certeza de que o serviço estava atualizado com suas alterações locais quando você sincronizou pela última vez. Carregar alterações locais que o servidor não conhece. |
resyncRequired | Nova sincronização é necessária. |
resyncUploadDifferences | Nova sincronização necessária. Carregue os itens locais que o serviço não retornou e carregue os arquivos que diferem da versão do servidor (mantendo ambas as cópias se você não tiver certeza de qual é a mais atual). |
serviceNotAvailable | O servidor não consegue processar a solicitação atual. |
serviceReadOnly | O recurso é temporariamente somente leitura. |
throttledRequest | Muitos pedidos. |
tooManyResultsRequested | Muitos resultados solicitados. |
tooManyTermsInQuery | Muitos termos na consulta. |
totalAffectedItemCountExceeded | Operação não permitida porque o número de itens afetados excede o limite. |
truncationNotAllowed | O truncamento de dados não é permitido. |
uploadSessionFailed | Falha na sessão de carregamento. |
uploadSessionIncomplete | Sessão de carregamento incompleta. |
uploadSessionNotFound | Sessão de carregamento não encontrada. |
virusSuspicious | Este documento é suspeito e pode conter um vírus. |
zeroOrFewerResultsRequested | Nenhum ou poucos resultados solicitados. |