Autorisations d’upsert

Espace de noms: microsoft.graph

Importante

Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .

Upsert (créer ou mettre à jour) jusqu’à 10 objets d’autorisation sur un fileStorageContainer dans une même requête. Le correctif delta permet à l’appelant d’effectuer plusieurs opérations (créer, mettre à jour) sur plusieurs autorisations avec une seule requête.

Importante

Les autorisations ajoutées à un fileStorageContainer s’appliquent à tous ses objets driveItem , quelles que soient les autorisations uniques ou restrictives appliquées à ces éléments.

Cette API est disponible dans les déploiements de cloud national suivants.

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Autorisations

Choisissez l’autorisation ou les autorisations marquées comme moins privilégiées pour cette API. Utilisez une autorisation ou des autorisations privilégiées plus élevées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, consultez Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez les informations de référence sur les autorisations.

Type d’autorisation Autorisations avec privilèges minimum Autorisations privilégiées plus élevées
Déléguée (compte professionnel ou scolaire) FileStorageContainer.Selected FileStorageContainer.Manage.All
Déléguée (compte Microsoft personnel) FileStorageContainer.Selected Non disponible.
Application FileStorageContainer.Selected Non disponible.

Remarque

En plus des autorisations Microsoft Graph, votre application doit disposer de l’autorisation ou des autorisations nécessaires au niveau du type de conteneur pour appeler cette API. Pour plus d’informations, consultez Types de conteneurs. Pour en savoir plus sur les autorisations au niveau du type de conteneur, voir Autorisation SharePoint Embedded.

Requête HTTP

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

En-têtes de demande

Nom Description
Autorisation Porteur {token}. Obligatoire. En savoir plus sur l’authentification et l’autorisation.
Content-Type application/json. Obligatoire.

Corps de la demande

Dans le corps de la demande, fournissez un objet JSON avec les propriétés suivantes.

Nom Type Description
@context String Annotation OData qui identifie le type de charge utile. Doit être défini sur #$delta pour signaler une opération de correctif delta. Obligatoire.
valeur collection permission Collection de jusqu’à 10 objets d’autorisation à traiter. Obligatoire.

Chaque entrée de la collection de valeurs représente une opération sur une autorisation. La présence de la propriété id détermine la façon dont l’entrée est interprétée. Incluez l’ID d’une autorisation existante pour la mettre à jour, ou omettez l’ID pour créer une nouvelle autorisation.

Chaque entrée prend en charge les annotations et propriétés suivantes :

Nom Type Description
id String ID de l’autorisation existante. Lorsque l’ID est présent, l’élément est traité comme une mise à jour. Lorsque l’ID est omis, l’élément est traité comme une opération de création. Facultatif.
grantedToV2 sharePointIdentitySet Pour les autorisations de type utilisateur, spécifiez les détails de l’utilisateur pour cette autorisation. Requis pour les opérations de création. Ne spécifiez pas pour les opérations de mise à jour.
roles Collection de chaînes Type d’autorisation à accorder. Les valeurs possibles sont : reader, writer, manager, owner. Obligatoire pour les opérations de création et de mise à jour.
@microsoft.graph.conflictBehavior String Paramètre d’annotation qui contrôle le comportement lorsque l’identité cible est déjà membre du conteneur avec un rôle différent. Les valeurs possibles sont les suivantes : fail, replace. La valeur par défaut est fail. S’applique uniquement aux opérations de création. Facultatif.

L’annotation @microsoft.graph.conflictBehavior est par élément. La valeur fail par défaut entraîne l’échec de l’élément avec un code de réponse par élément 409 Conflict . La valeur replace remplace le rôle existant pour l’identité par le rôle spécifié dans l’élément, et l’élément réussit. Toute autre valeur entraîne l’échec de l’élément avec un code de réponse par élément 400 Bad Request .

Les éléments de mise à jour ne doivent pas inclure de propriétés autres que l’ID et les rôles. La propriété roles est obligatoire. Les éléments qui enfreignent l’une ou l’autre règle échouent avec un code de réponse par élément 400 Bad Request .

Réponse

Si elle réussit, cette méthode renvoie un 200 OK code de réponse et une collection d’objets d’autorisation dans le corps de la réponse. Les autorisations traitées avec succès incluent un objet d’autorisation . Les éléments ayant échoué incluent une annotation @Core.DataModificationException avec les détails de l’erreur.

Cette API peut également retourner les codes de réponse d’erreur suivants pour l’ensemble de la requête :

Code HTTP Description
400 Demande incorrecte
401 La demande ne dispose pas d’informations d’identification d’authentification valides.
403 Les informations d’identification d’authentification fournies sont valides mais insuffisantes pour effectuer l’opération demandée. Exemples de scénarios : l’application appelante n’a pas l’autorisation de gérer les autorisations pour les conteneurs de ce type, ou l’utilisateur appelant n’a pas d’autorisations sur ce conteneur instance, ou son rôle n’autorise pas la gestion des autorisations de conteneur.
404 Le conteneur n’existe pas.
423 Le conteneur est verrouillé. Par exemple, le conteneur est archivé.

Exemples

Demande

L’exemple suivant montre une seule demande de correctif delta qui combine des éléments de création et de mise à jour dans un seul appel. Les éléments sans ID sont traités comme des opérations de création ; les éléments avec un ID sont traités comme des opérations de mise à jour. Les éléments qui échouent sont signalés inline avec une annotation @Core.DataModificationException . Les autres éléments réussissent toujours.

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

Réponse

L’exemple suivant illustre la réponse. Les deux premières opérations de création réussissent. La deuxième opération remplace le rôle existant pour l’utilisateur cible. La troisième opération de création échoue, car l’identité est déjà membre du conteneur avec un rôle différent. La première opération de mise à jour réussit. La deuxième opération de mise à jour échoue, car aucune autorisation avec cet ID n’existe.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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