共通エラー応答とコード

OneDrive API のエラーは、標準の HTTP 状態コード、および JSON エラー応答オブジェクトを使用して返されます。 次のような HTTP 状態コードが予期されます。

状態コード ステータス メッセージ 説明
400 要求が正しくありません (Bad Request) 形式が正しくない、または無効なため、要求を処理できません。
401 権限がありません (Unauthorized) リソースの必要な認証情報が見つからないか、無効です。
403 禁止されています (Forbidden) 要求されたリソースへのアクセスが拒否されました。 ユーザーに十分なアクセス許可がない可能性があります。
404 見つかりません (Not Found) 要求されたリソースは存在しません。
405 メソッドが許可されていません (Method Not Allowed) 要求の HTTP メソッドはリソースで許可されていません。
406 許容されません (Not Acceptable) このサービスでは、Accept ヘッダーで要求された形式をサポートしていません。
409 競合 (Conflict) 現在の状態が要求に必要なものと競合しています。 たとえば、指定された親フォルダーが存在しない可能性があります。
410 使用されていないリソース (Gone) 要求されたリソースはサーバーで使用できなくなっています。
411 長さが必要 (Length Required) 要求に Content-Length ヘッダーが必要です。
412 必須条件に失敗しました (Precondition Failed) 要求で提供されている必須条件 (If-match ヘッダーなど) がリソースの現在の状態と一致しません。
413 要求エンティティが大きすぎます (Request Entity Too Large) 要求サイズが上限を超えています。
415 メディアの種類がサポートされていません (Unsupported Media Type) 要求のコンテンツの種類がサービスによってサポートされていない形式です。
416 要求された範囲が満たされません (Requested Range Not Satisfiable) 指定したバイト範囲が正しくない、または利用できません。
422 処理できないエンティティです (Unprocessable Entity) 意味的に正しくないため、要求を処理できません。
429 要求数が多すぎます (Too Many Requests) クライアント アプリケーションは調整されており、一定の時間が経過するまで要求を繰り返しません。
500 内部サーバー エラー (Internal Server Error) 要求の処理中に内部サーバー エラーが発生しました。
501 実装されていません (Not Implemented) 要求された機能は実装されていません。
503 サービスを使用できません (Service Unavailable) サービスは一時的に利用できません。 後で要求を繰り返すことができます。 Retry-After ヘッダーがある可能性があります。
507 記憶域の不足 (Insufficient Storage) 記憶域の最大クォータに達しました。
509 帯域幅の上限を超えました (Bandwidth Limit Exceeded) 帯域幅の上限を超えたため、アプリケーションが調整されました。 さらに時間が経過すると、アプリは要求を再試行できます。

エラー応答は、エラーという名前の 1 つのプロパティを含む 1 つの JSON オブジェクトです。 このオブジェクトには、すべてのエラーの詳細が含まれます。 返された HTTP 状態 コードの代わりに、またはこれに加えて、ここに返される情報を使用する場合があります。 完全な JSON エラー本文の例を示します。

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

コードのプロパティ

code プロパティには、有効な 15 の値のいずれかが含まれます。 アプリは、これらのエラーのいずれかを処理するように準備する必要があります。

コード 説明
accessDenied 呼び出し元にアクションを実行するアクセス許可がありません。
activityLimitReached アプリまたはユーザーが調整されました。
generalException 不明なエラーが発生しました。
invalidRange 指定したバイト範囲が正しくない、または利用できません。
invalidRequest 要求は形式が正しくないか、無効です。
itemNotFound リソースが見つかりませんでした。
malwareDetected 要求されたリソースでマルウェアが検出されました。
nameAlreadyExists 指定されたアイテム名は既に存在します。
notAllowed このアクションはシステムで許容されません。
notSupported 要求はシステムでサポートされていません。
resourceModified 呼び出し元による最後の読み取り以降に、更新されるリソースが変更されました。通常、eTag の不一致です。
resyncRequired デルタ トークンは無効になりました。アプリが同期状態をリセットする必要があります。
serviceNotAvailable サービスが利用できません。 後で要求をもう一度お試しください。 Retry-After ヘッダーがある可能性があります。
quotaLimitReached ユーザーがクォータ制限に達しました。
unauthenticated 呼び出し元が認証されていません。

innererror オブジェクトには、さらに詳細な追加のエラー コードを持つ別の複数の innererror オブジェクトが再帰的に含まれる可能性があります。 エラーを処理する際に、アプリは使用可能なすべてのエラー コード間をループして、アプリが理解する最も詳細なコードを使用する必要があります。 より詳細なコードの一部は、このページの下部に一覧表示されています。

エラー オブジェクトが予期したとおりのエラーであることを確認するには、innererror オブジェクト全体をループして、予期したエラー コードを検索する必要があります。 次に例を示します。

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

エラーを正しく処理する完全な例については、「OneDrive エラー コードの処理」を参照してください。

ルートにある message プロパティには、開発者が読み取ることを目的としたエラー メッセージが含まれます。 エラー メッセージはローカライズされておらず、直接ユーザーに表示すべきではありません。 エラーを処理する場合、コードは、いつでも変更できるため、値の message キーオフを行うべきではありません。また、失敗した要求に固有の動的な情報が含まれていることがよくあります。 code プロパティで返されるエラー コードに対してのみ、コードを記述する必要があります。

エラー応答で返されるリソースの詳細については、「エラー リソースの種類」のトピックを参照してください。

詳細なエラー コード

入れ子になったオブジェクト内でアプリで発生する可能性があるその他のエラーを次に innererror 示します。 アプリはこれらを処理する必要はありませんが、選択した場合は可能です。 サービスは、新しいエラー コードを追加したり、古いエラー コードの返しをいつでも停止したりする可能性があるため、すべてのアプリで 上記の基本 15 を処理できることが重要です。

コード 説明
accessRestricted アイテムの所有者に限定されたアクセス。
cannotSnapshotTree 一貫性のあるデルタ スナップショットを取得できませんでした。 後でもう一度お試しください。
childItemCountExceeded 子アイテムの上限数に達しました。
entityTagDoesNotMatch eTag が現在のアイテムの値と一致しません。
fragmentLengthMismatch このフラグメントの宣言された合計サイズは、アップロード セッションのものとは異なります。
fragmentOutOfOrder アップロードされたフラグメントが順不同です。
fragmentOverlap アップロードされたフラグメントが既存のデータと重複しています。
invalidAcceptType 承諾の種類が正しくありません。
invalidParameterFormat パラメーターの書式が正しくありません。
invalidPath 名前に使用できない文字が含まれています。
invalidQueryOption クエリのオプションが正しくありません。
invalidStartIndex 開始インデックスが正しくありません。
lockMismatch ロック トークンが既存のロックと一致しません。
lockNotFoundOrAlreadyExpired 現在、期限切れでないロックがアイテムにありません。
lockOwnerMismatch ロック所有者の ID が提供された ID と一致しません。
malformedEntityTag eTag ヘッダーの形式が正しくありません。 eTag は、引用符で囲まれた文字列である必要があります。
maxDocumentCountExceeded ドキュメントの上限数に達しました。
maxFileSizeExceeded ファイル サイズの上限を超えました。
maxFolderCountExceeded フォルダーの上限数に達しました。
maxFragmentLengthExceeded ファイル サイズの上限を超えました。
maxItemCountExceeded アイテムの上限数に達しました。
maxQueryLengthExceeded クエリの長さの上限を超えました。
maxStreamSizeExceeded ストリーム サイズの上限を超えました。
parameterIsTooLong パラメーターの長さが上限を超えています。
parameterIsTooSmall パラメーターの値が最小値未満です。
pathIsTooLong パスの長さが上限を超えています。
pathTooDeep フォルダー階層の深さの限度に達しました。
propertyNotUpdateable プロパティを更新できません。
resyncApplyDifferences 再同期が必要です。 最後に同期したときに、サービスをローカル変更に対して最新の状態にしたことが確実な場合、すべてのローカル項目をサーバーのバージョンと置き換えます (削除を含む)。 サーバーが把握していないすべてのローカル変更をアップロードします。
resyncRequired 再同期が必要です。
resyncUploadDifferences 再同期が必要です。 サービスが返さないすべてのローカル アイテムをアップロードして、サーバーのバージョンと異なるすべてのファイルをアップロードします (どちらがより最新の状態であるかわからない場合は、両方のコピーを保持する)。
serviceNotAvailable サーバーが現在の要求を処理できません。
serviceReadOnly リソースが一時的に読み取り専用になっています。
throttledRequest 要求数が多すぎます。
tooManyResultsRequested 要求された結果が多すぎます。
tooManyTermsInQuery クエリ内のアイテムが多すぎます。
totalAffectedItemCountExceeded 影響を受けるアイテム数がしきい値を超えているため、操作は許可されません。
truncationNotAllowed データの切り捨ては許可されていません。
uploadSessionFailed アップロード セッションが失敗しました。
uploadSessionIncomplete アップロード セッションが完了していません。
uploadSessionNotFound アップロード セッションが見つかりません。
virusSuspicious このドキュメントは疑わしいドキュメントであり、ウイルスを含んでいる可能性があります。
zeroOrFewerResultsRequested ゼロ個以下の結果が要求されました。