アップサートのアクセス許可

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

1 回の要求で fileStorageContainer に対して最大 40 個のアクセス許可オブジェクトをアップサート (作成または更新) します。 差分パッチを使用すると、呼び出し元は 1 つの要求で複数のアクセス許可に対して複数の操作 (作成、更新) を実行できます。

重要

fileStorageContainer に追加されたアクセス許可は、それらの項目に適用された一意または制限付きのアクセス許可に関係なく、そのすべての driveItem オブジェクトに適用されます。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国
✅ ✅ ✅ ✅

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) FileStorageContainer.Selected FileStorageContainer.Manage.All
委任 (個人用 Microsoft アカウント) FileStorageContainer.Selected 注意事項なし。
アプリケーション FileStorageContainer.Selected 注意事項なし。

注:

Microsoft Graph のアクセス許可に加えて、アプリには、この API を呼び出すために必要なコンテナー タイプ レベルのアクセス許可が必要です。 詳細については、「 コンテナーの種類」を参照してください。 コンテナーの種類レベルのアクセス許可の詳細については、「 SharePoint 埋め込み承認」を参照してください。

HTTP 要求

PATCH /storage/fileStorage/containers/{containerId}/permissions

要求ヘッダー

名前 説明
Authorization ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。
Content-Type application/json. 必須です。

要求本文

リクエストの本文には、次のプロパティを持つ JSON オブジェクトを指定します。

名前 型 説明
@context 文字列 ペイロードの種類を識別する OData 注釈。 デルタ パッチ操作を通知するには、 #$delta に設定する必要があります。 必須です。
値 permission コレクション 処理する最大 40 個の アクセス許可 オブジェクトのコレクション。 必須です。

値コレクション内の各エントリは、アクセス許可に対する 1 つの操作を表します。 id プロパティの有無によって、エントリがどのように解釈されるかが決まります。 既存のアクセス許可の ID を含めて更新するか、ID を省略して新しいアクセス許可を作成します。

各エントリは、次のプロパティと注釈をサポートします。

名前 型 説明
id 文字列 既存のアクセス許可の ID。 ID が存在する場合、項目は更新プログラムとして扱われます。 ID を省略すると、項目は作成操作として扱われます。 省略可能。
grantedToV2 sharePointIdentitySet ユーザー タイプのアクセス許可の場合は、このアクセス許可のユーザーの詳細を指定します。 作成操作に必要です。 更新操作には指定しません。
roles 文字列コレクション 付与するアクセス許可の種類。 使用可能な値: reader、writer、manager、owner。 作成操作と更新操作の両方に必要です。
@microsoft.graph.conflictBehavior 文字列 ターゲット ID が既に別のロールを持つコンテナーのメンバーである場合の動作を制御する注釈パラメーター。 可能な値は、fail、replace です。 既定値は fail です。 作成操作にのみ適用されます。 省略可能。

@microsoft.graph.conflictBehavior アノテーションは項目ごとです。 既定値 fail では、項目ごとの 409 Conflict 応答コードで項目が失敗します。 値 replace は、ID の既存のロールを項目で指定されたロールに置き換え、項目は成功します。 他の値を指定すると、項目は失敗し、項目ごとの 400 Bad Request 応答コードが生成されます。

更新プログラムの項目には、ID とロール以外のプロパティを含めることはできません。 roles プロパティは必須です。 いずれかのルールに違反するアイテムは、アイテムごとの 400 Bad Request 応答コードで失敗します。

応答

成功した場合、このメソッドは 200 OK 応答コードと、応答本文の アクセス許可 オブジェクトのコレクションを返します。 正常に処理されるアクセス許可には 、アクセス許可 オブジェクトが含まれます。 失敗した項目には、エラーの詳細を含む @Core.DataModificationException 注釈が含まれます。

この API は、要求全体に対して次のエラー応答コードを返す場合もあります。

HTTP コード 説明
400 要求が正しくありません。
401 要求に有効な認証資格情報がありません。
403 指定された認証資格情報は有効ですが、要求された操作を実行するには不十分です。 シナリオの例: 呼び出し元のアプリにこの種類のコンテナーのアクセス許可を管理するアクセス許可がない、呼び出し元のユーザーにこのコンテナー インスタンスに対するアクセス許可がない、またはそのロールでコンテナーのアクセス許可管理が許可されていないなどがあります。
404 コンテナーが存在しません。
423 コンテナーはロックされています。 たとえば、コンテナーがアーカイブされたとします。

例

要求

次の例は、1 回の呼び出しでアイテムの作成と更新が混在する 1 つのデルタ パッチ要求を示しています。 ID のないアイテムは作成操作として扱われます。ID を持つアイテムは、更新操作として扱われます。 失敗した項目は、 @Core.DataModificationException 注釈を使用してインラインで報告されます。 残りの項目は引き続き成功します。

PATCH https://graph.microsoft.com/beta/storage/fileStorage/containers/b!ISJs1WRro0y0EWgkUYcktDa0mE8zSlFEqFzqRn70Zwp1CEtDEBZgQICPkRbil_5Z/permissions
Content-Type: application/json

{
  "@context": "#$delta",
  "value": [
    {
      "roles": ["reader"],
      "grantedToV2": {
        "user": {
          "userPrincipalName": "alex@contoso.com"
        }
      }
    },
    {
      "@microsoft.graph.conflictBehavior": "replace",
      "roles": ["writer"],
      "grantedToV2": {
        "user": {
          "userPrincipalName": "kate@contoso.com"
        }
      }
    },
    {
      "roles": ["owner"],
      "grantedToV2": {
        "user": {
          "userPrincipalName": "mike@contoso.com"
        }
      }
    },
    {
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfGFsZXhAY29udG9zby5jb20",
      "roles": ["manager"]
    },
    {
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfG5vdGFmb3VuZEBjb250b3NvLmNvbQ",
      "roles": ["manager"]
    }
  ]
}

応答

次の例は応答を示しています。 最初の 2 つの作成操作は成功します。 2 番目の操作では、ターゲット ユーザーの既存のロールを置き換えます。 3 回目の作成操作は、id が既に別のロールを持つコンテナーのメンバーであるために失敗します。 最初の更新操作が成功します。 2 回目の更新操作は、その ID のアクセス許可が存在しないため失敗します。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#storage/fileStorage/containers('b%21ISJs1WRro0y0EWgkUYcktDa0mE8zSlFEqFzqRn70Zwp1CEtDEBZgQICPkRbil_5Z')/permissions/$delta",
  "value": [
    {
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfGFsZXhAY29udG9zby5jb20",
      "roles": [
        "reader"
      ],
      "grantedToV2": {
        "user": {
          "displayName": "Alex Wilson",
          "id": "1a2b3c4d-1111-2222-3333-444455556666",
          "userPrincipalName": "alex@contoso.com"
        }
      }
    },
    {
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfGthdGVAY29udG9zby5jb20",
      "roles": [
        "writer"
      ],
      "grantedToV2": {
        "user": {
          "displayName": "Kate Brown",
          "id": "2b3c4d5e-2222-3333-4444-555566667777",
          "userPrincipalName": "kate@contoso.com"
        }
      }
    },
    {
      "@Core.DataModificationException": {
        "@odata.type": "#Org.OData.Core.V1.DataModificationExceptionType",
        "failedOperation": "Create",
        "responseCode": 409,
        "info": {
          "code": "Conflict",
          "message": "Conflict: this identity is a [Reader] member of the container and cannot be added to the [Owner] role."
        }
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "roles": [
        "owner"
      ],
      "grantedToV2": {
        "user": {
          "userPrincipalName": "mike@contoso.com"
        }
      }
    },
    {
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfGFsZXhAY29udG9zby5jb20",
      "roles": [
        "manager"
      ],
      "grantedToV2": {
        "user": {
          "displayName": "Alex Wilson",
          "id": "1a2b3c4d-1111-2222-3333-444455556666",
          "userPrincipalName": "alex@contoso.com"
        }
      }
    },
    {
      "@Core.DataModificationException": {
        "@odata.type": "#Org.OData.Core.V1.DataModificationExceptionType",
        "failedOperation": "Update",
        "responseCode": 404,
        "info": {
          "code": "NotFound",
          "message": "Item not found."
        }
      },
      "id": "X2k6MCMuZnxtZW1iZXJzaGlwfG5vdGFmb3VuZEBjb250b3NvLmNvbQ"
    }
  ]
}