Upsert-Berechtigungen

Namespace: microsoft.graph

Upsert (Erstellen oder Aktualisieren) von bis zu 10 Berechtigungsobjekten für einen fileStorageContainer in einer einzelnen Anforderung. Delta-Patch ermöglicht es dem Aufrufer, mehrere Vorgänge (Erstellen, Aktualisieren) für mehrere Berechtigungen mit einer einzigen Anforderung auszuführen.

Wichtig

Berechtigungen, die einem fileStorageContainer hinzugefügt werden, gelten für alle seine driveItem-Objekte , unabhängig von eindeutigen oder restriktiven Berechtigungen, die auf diese Elemente angewendet werden.

Diese API ist in den folgenden nationalen Cloudbereitstellungen verfügbar.

Weltweiter Service US Government L4 US Government L5 (DOD) China, betrieben von 21Vianet

Berechtigungen

Wählen Sie die Berechtigungen aus, die für diese API als am wenigsten privilegiert markiert sind. Verwenden Sie eine höhere Berechtigung oder Berechtigungen nur, wenn Ihre App dies erfordert. Ausführliche Informationen zu delegierten Berechtigungen und Anwendungsberechtigungen finden Sie unter Berechtigungstypen. Weitere Informationen zu diesen Berechtigungen finden Sie in der Berechtigungsreferenz.

Berechtigungstyp Berechtigungen mit den geringsten Berechtigungen Berechtigungen mit höheren Berechtigungen
Delegiert (Geschäfts-, Schul- oder Unikonto) FileStorageContainer.Selected FileStorageContainer.Manage.All
Delegiert (persönliches Microsoft-Konto) FileStorageContainer.Selected Nicht verfügbar.
Application FileStorageContainer.Selected Nicht verfügbar.

Zusätzlich zu Den Microsoft Graph-Berechtigungen muss Ihre App auch über die erforderlichen Berechtigungen auf Containertypebene verfügen, um diese API aufzurufen. Ausführliche Informationen zu Containertypen finden Sie unter Containertypen. Weitere Informationen zu Berechtigungen auf Containertypebene finden Sie unter SharePoint Embedded Authorization.

HTTP-Anforderung

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

Anforderungsheader

Name Beschreibung
Authorization Bearer {token}. Erforderlich. Erfahren Sie mehr über Authentifizierung und Autorisierung.
Content-Type application/json. Erforderlich.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt mit den folgenden Eigenschaften an.

Name Typ Beschreibung
@context Zeichenfolge OData-Anmerkung, die den Nutzlasttyp identifiziert. Muss auf #$delta festgelegt werden, um einen Delta-Patchvorgang zu signalisieren. Erforderlich.
Wert permission collection Eine Auflistung von bis zu 10 zu verarbeitenden Berechtigungsobjekten. Erforderlich.

Jeder Eintrag in der Wertauflistung stellt einen Vorgang für eine Berechtigung dar. Das Vorhandensein der id-Eigenschaft bestimmt, wie der Eintrag interpretiert wird. Fügen Sie die ID einer vorhandenen Berechtigung ein, um sie zu aktualisieren, oder lassen Sie die ID aus, um eine neue Berechtigung zu erstellen.

Jeder Eintrag unterstützt die folgenden Eigenschaften und Anmerkungen:

Name Typ Beschreibung
id Zeichenfolge Die ID der vorhandenen Berechtigung. Wenn die ID vorhanden ist, wird das Element als Update behandelt. Wenn die ID nicht angegeben wird, wird das Element als Erstellungsvorgang behandelt. Optional.
grantedToV2 sharePointIdentitySet Geben Sie für Benutzertypberechtigungen die Details des Benutzers für diese Berechtigung an. Erforderlich für Erstellungsvorgänge. Geben Sie nicht für Updatevorgänge an.
roles Zeichenfolgenauflistung Der Typ der zu gewährenden Berechtigung. Mögliche Werte sind: reader, writer, manager, owner. Erforderlich für Erstellungs- und Aktualisierungsvorgänge.
@microsoft.graph.conflictBehavior Zeichenfolge Ein Anmerkungsparameter, der das Verhalten steuert, wenn die Zielidentität bereits Mitglied des Containers mit einer anderen Rolle ist. Mögliche Werte sind: fail und replace. Der Standardwert ist fail. Gilt nur für Erstellungsvorgänge. Optional.

Die @microsoft.graph.conflictBehavior-Anmerkung gilt pro Element. Der Standardwert fail führt dazu, dass das Element mit einem Antwortcode pro Element 409 Conflict fehlschlägt. Der Wert replace ersetzt die vorhandene Rolle für die Identität durch die im Element angegebene Rolle, und das Element ist erfolgreich. Jeder andere Wert führt dazu, dass das Element mit einem Antwortcode pro Element 400 Bad Request fehlschlägt.

Updateelemente dürfen keine anderen Eigenschaften als ID und Rollen enthalten. Die Roles-Eigenschaft ist erforderlich. Elemente, die gegen eine der beiden Regeln verstoßen, schlagen mit einem Antwortcode pro Element 400 Bad Request fehl.

Antwort

Wenn die Methode erfolgreich verläuft, werden der 200 OK Antwortcode und eine Auflistung von Berechtigungsobjekten im Antworttext zurückgegeben. Berechtigungen, die erfolgreich verarbeitet werden, enthalten ein Berechtigungsobjekt . Zu den fehlerhaften Elementen gehört eine @Core.DataModificationException-Anmerkung mit Fehlerdetails.

Diese API gibt möglicherweise auch die folgenden Fehlerantwortcodes für die gesamte Anforderung zurück:

HTTP-Code Beschreibung
400 Ungültige Anforderung.
401 Für die Anforderung fehlen gültige Anmeldeinformationen für die Authentifizierung.
403 Die angegebenen Anmeldeinformationen für die Authentifizierung sind gültig, reichen aber nicht aus, um den angeforderten Vorgang auszuführen. Beispielszenarien: Die aufrufende App verfügt nicht über die Berechtigung zum Verwalten von Berechtigungen für Container dieses Typs, oder der aufrufende Benutzer hat keine Berechtigungen für diesen Container instance, oder seine Rolle lässt keine Containerberechtigungsverwaltung zu.
404 Der Container ist nicht vorhanden.
423 Der Container ist gesperrt. Beispielsweise wird der Container archiviert.

Beispiele

Anforderung

Das folgende Beispiel zeigt eine einzelne Delta-Patchanforderung, die Erstellungs- und Aktualisierungselemente in einem Aufruf kombiniert. Elemente ohne ID werden als Erstellungsvorgänge behandelt. Elemente mit einer ID werden als Aktualisierungsvorgänge behandelt. Elemente, die fehlschlagen, werden inline mit einer @Core.DataModificationException-Anmerkung gemeldet. Die verbleibenden Elemente sind weiterhin erfolgreich.

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"]
    }
  ]
}

Antwort

Das folgende Beispiel zeigt die Antwort. Die ersten beiden Erstellungselemente sind erfolgreich (das zweite Element ersetzt die vorhandene Rolle für den Zielbenutzer). Das dritte Erstellungselement schlägt fehl, da die Identität bereits ein Mitglied des Containers mit einer anderen Rolle ist. Das erste Updateelement ist erfolgreich; die zweite schlägt fehl, da keine Berechtigung mit dieser ID vorhanden ist.

Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.

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"
    }
  ]
}