Berechtigungen für Upsert verwenden

Namespace: microsoft.graph

Wichtig

Die APIs unter der /beta Version in Microsoft Graph können sich ändern. Die Verwendung dieser APIs in Produktionsanwendungen wird nicht unterstützt. Um festzustellen, ob eine API in v1.0 verfügbar ist, verwenden Sie die Version Selektor.

Upsert (erstellen oder aktualisieren) von bis zu 40 Berechtigungsobjekten auf einem fileStorageContainer in einer einzigen Anforderung. Mit dem Deltapatch kann der Aufrufer mit einer einzigen Anforderung mehrere Vorgänge (erstellen, aktualisieren) für mehrere Berechtigungen ausfü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.

Hinweis

Zusätzlich zu den Microsoft Graph-Berechtigungen muss Ihre App über die erforderliche Berechtigung auf Containertypebene verfügen, um diese API aufzurufen. Weitere Informationen finden Sie unter Containertypen. Weitere Informationen zu Berechtigungen auf Containertypebene finden Sie unter SharePoint Embedded-Autorisierung.

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 eingestellt sein, um #$delta einen Delta-Patch-Vorgang zu signalisieren. Erforderlich.
Wert permission collection Eine Sammlung von bis zu 40 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. Schließen Sie die ID einer vorhandenen Berechtigung ein, um sie zu aktualisieren, oder lassen Sie die ID weg, 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 Aktualisierung behandelt. Wenn die ID weggelassen 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. Nicht für Updatevorgänge angeben.
roles Zeichenfolgenauflistung Der Typ der zu erteilenden 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 wird pro Element angewendet. Der Standardwert fail bewirkt, dass das Element mit einem Antwortcode pro Element 409 Conflict fehlschlägt. Der Wert replace ersetzt die bestehende 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

Bei erfolgreicher Ausführung gibt diese Methode einen 200 OK Antwortcode und eine Auflistung von Berechtigungsobjekten im Antworttext zurück. Berechtigungen, die erfolgreich verarbeitet werden, enthalten ein Berechtigungsobjekt . Fehlerhafte Elemente enthalten 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 Anforderung fehlen gültige Anmeldeinformationen für die Authentifizierung.
403 Angegebene 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 diese Container-Instance, oder seine Rolle lässt die Verwaltung von Containerberechtigungen nicht zu.
404 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 Elemente in einem Aufruf kombiniert, erstellt und aktualisiert. 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 restlichen Elemente sind weiterhin erfolgreich.

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

Antwort

Das folgende Beispiel zeigt die Antwort. Die ersten beiden Erstellungsvorgänge sind erfolgreich. Der zweite Vorgang ersetzt die vorhandene Rolle für den Zielbenutzer. Der dritte Erstellungsvorgang schlägt fehl, da die Identität bereits ein Mitglied des Containers mit einer anderen Rolle ist. Der erste Updatevorgang ist erfolgreich. Der zweite Updatevorgang 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/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"
    }
  ]
}