Permissões de upsert

Namespace: microsoft.graph

Executar upsert (criar ou atualizar) até 40 objetos de permissão em um fileStorageContainer em uma única solicitação. O patch delta permite que o chamador execute várias operações (criar, atualizar) em várias permissões com uma única solicitação.

Importante

As permissões adicionadas a um fileStorageContainer se aplicam a todos os seus objetos driveItem , independentemente de quaisquer permissões exclusivas ou restritivas aplicadas a esses itens.

Essa API está disponível nas seguintes implantações de nuvem nacional.

Serviço global Governo dos EUA L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.

Tipo de permissão Permissões menos privilegiadas Permissões com privilégios mais elevados
Delegado (conta corporativa ou de estudante) FileStorageContainer.Selected FileStorageContainer.Manage.All
Delegado (conta pessoal da Microsoft) FileStorageContainer.Selected Indisponível.
Application FileStorageContainer.Selected Indisponível.

Além das permissões do Microsoft Graph, seu aplicativo também deve ter a permissão ou permissões de nível de tipo de contêiner necessárias para chamar essa API. Para obter detalhes sobre tipos de contêiner, consulte Tipos de contêiner. Para saber mais sobre permissões de nível de tipo de contêiner, consulte Autorização Incorporada do SharePoint.

Solicitação HTTP

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

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
Content-Type application/json. Obrigatório.

Corpo da solicitação

No corpo da solicitação, forneça um objeto JSON com as propriedades a seguir.

Nome Tipo Descrição
@context Cadeia de caracteres Anotação OData que identifica o tipo de conteúdo. Deve ser definido como #$delta para sinalizar uma operação de patch delta. Obrigatório.
valor Coleção permission Uma coleção de até 40 objetos de permissão a serem processados. Obrigatório.

Cada entrada na coleção de valores representa uma operação em uma permissão. A presença da propriedade id determina como a entrada é interpretada. Inclua a ID de uma permissão existente para atualizá-la ou omita a ID para criar uma nova permissão.

Cada entrada dá suporte às seguintes propriedades e anotações:

Nome Tipo Descrição
id Cadeia de caracteres A ID da permissão existente. Quando a ID está presente, o item é tratado como uma atualização. Quando a ID é omitida, o item é tratado como uma operação de criação. Opcional.
grantedToV2 sharePointIdentitySet Para permissões de tipo de usuário, especifique os detalhes do usuário para essa permissão. Necessário para operações de criação. Não especifique para operações de atualização.
funções Coleção de cadeias de caracteres O tipo de permissão a ser concedida. Os valores possíveis são: reader, writer, manager, owner. Necessário para operações de criação e atualização.
@microsoft.graph.conflictBehavior Cadeia de caracteres Um parâmetro de anotação que controla o comportamento quando a identidade de destino já é um membro do contêiner com uma função diferente. Os valores possíveis são: fail e replace. O valor padrão é fail. Aplica-se somente a operações de criação. Opcional.

A anotação @microsoft.graph.conflictBehavior é por item. O valor fail padrão faz com que o item falhe com um código de resposta por item 409 Conflict . O valor replace substitui a função existente para a identidade pela função especificada no item e o item é bem-sucedido. Qualquer outro valor faz com que o item falhe com um código de resposta por item 400 Bad Request .

Os itens de atualização não devem incluir propriedades diferentes de ID e funções. A propriedade roles é obrigatória. Os itens que violam qualquer uma das regras falham com um código de resposta por item 400 Bad Request .

Resposta

Se for bem-sucedido, esse método retornará um 200 OK código de resposta e uma coleção de objetos de permissão no corpo da resposta. As permissões processadas com êxito incluem um objeto de permissão . Os itens com falha incluem uma anotação @Core.DataModificationException com detalhes do erro.

Essa API também pode retornar os seguintes códigos de resposta de erro para toda a solicitação:

Código HTTP Descrição
400 Solicitação incorreta.
401 A solicitação não tem credenciais de autenticação válidas.
403 As credenciais de autenticação fornecidas são válidas, mas insuficientes para executar a operação solicitada. Cenários de exemplo: o aplicativo de chamada não tem permissão para gerenciar permissões para contêineres desse tipo, ou o usuário de chamada não tem permissões nessa instância de contêiner ou sua função não permite o gerenciamento de permissões de contêiner.
404 O contêiner não existe.
423 O contêiner está bloqueado. Por exemplo, o contêiner é arquivado.

Exemplos

Solicitação

O exemplo a seguir mostra uma única solicitação de patch delta que mistura itens de criação e atualização em uma chamada. Os itens sem uma ID são tratados como operações de criação; os itens com uma ID são tratados como operações de atualização. Os itens que falham são relatados embutidos com uma anotação @Core.DataModificationException . Os itens restantes ainda têm êxito.

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

Resposta

O exemplo a seguir mostra a resposta. Os dois primeiros itens de criação são bem-sucedidos (o segundo item substitui a função existente para o usuário de destino). O terceiro item de criação falha porque a identidade já é membro do contêiner com uma função diferente. O primeiro item de atualização é bem-sucedido; A segunda falha porque não existe nenhuma permissão para essa ID.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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