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

名前空間: microsoft.graph

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

重要

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

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

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

アクセス許可

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

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

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

HTTP 要求

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

要求ヘッダー

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

要求本文

要求本文で、次のプロパティを含む JSON オブジェクトを指定します。

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

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

各エントリでは、次のプロパティと注釈がサポートされています。

名前 説明
id 文字列 既存のアクセス許可の ID。 ID が存在する場合、アイテムは更新プログラムとして扱われます。 ID を省略すると、項目は作成操作として扱われます。 省略可能。
grantedToV2 sharePointIdentitySet ユーザーの種類のアクセス許可の場合は、このアクセス許可のユーザーの詳細を指定します。 作成操作に必要です。 更新操作には指定しないでください。
roles 文字列コレクション 付与するアクセス許可の種類。 使用可能な値: readerwritermanagerowner。 作成操作と更新操作の両方に必要です。
@microsoft.graph.conflictBehavior 文字列 ターゲット ID が既に別のロールを持つコンテナーのメンバーである場合の動作を制御する注釈パラメーター。 可能な値は、failreplace です。 既定値は 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/v1.0/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 番目の項目は、ターゲット ユーザーの既存のロールに置き換えられます)。 ID が既に別のロールを持つコンテナーのメンバーであるため、3 番目の作成項目は失敗します。 最初の更新項目は成功します。2 つ目は失敗します。これは、その ID を持つアクセス許可が存在しないためです。

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

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

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$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"
    }
  ]
}