Разрешения upsert

Пространство имен: microsoft.graph

Важно!

API версии /beta в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.

Upsert (создание или обновление) до 10 объектов разрешений в файлеStorageContainer в одном запросе . Разностное исправление позволяет вызывающей стороне выполнять несколько операций (создание, обновление) для нескольких разрешений с одним запросом.

Важно!

Разрешения, добавленные к fileStorageContainer , применяются ко всем его объектам driveItem , независимо от уникальных или ограничивающих разрешений, применяемых к этим элементам.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) FileStorageContainer.Selected FileStorageContainer.Manage.All
Делегированные (личная учетная запись Майкрософт) FileStorageContainer.Selected Недоступно.
Приложение FileStorageContainer.Selected Недоступно.

Примечание.

Помимо разрешений Microsoft Graph, ваше приложение должно иметь необходимые разрешения на уровне типа контейнера или разрешения для вызова этого API. Дополнительные сведения см. в разделе Типы контейнеров. Дополнительные сведения о разрешениях на уровне типа контейнера см. в статье Авторизация SharePoint Embedded.

HTTP-запрос

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

Заголовки запросов

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type application/json. Обязательно.

Текст запроса

В тексте запроса укажите объект JSON со следующими свойствами.

Имя Тип Описание
@context String Заметка OData, идентифицирующая тип полезных данных. Должно быть задано значение , #$delta чтобы сигнализировать о операции разностного исправления. Обязательно.
значение Коллекция объектов permission Коллекция из до 10 объектов разрешений для обработки. Обязательно.

Каждая запись в коллекции значений представляет одну операцию с разрешением. Наличие свойства id определяет, как интерпретируется запись. Добавьте идентификатор существующего разрешения для его обновления или опустите идентификатор для создания нового разрешения.

Каждая запись поддерживает следующие свойства и заметки:

Имя Тип Описание
id String Идентификатор существующего разрешения. При наличии идентификатора элемент обрабатывается как обновление. Если идентификатор опущен, элемент обрабатывается как операция создания. Необязательный параметр.
grantedToV2 sharePointIdentitySet Для разрешений типа пользователя укажите сведения о пользователе для этого разрешения. Требуется для операций создания. Не указывайте для операций обновления.
roles Набор строк Тип разрешения для предоставления. Допустимые значения: reader, writer, manager, owner. Требуется для операций создания и обновления.
@microsoft.graph.conflictBehavior String Параметр заметки, который управляет поведением, когда целевое удостоверение уже является членом контейнера с другой ролью. Возможные значения: fail, replace. Значение по умолчанию — fail. Применяется только к операциям создания. Необязательный параметр.

Заметка @microsoft.graph.conflictBehavior указана для каждого элемента. Значение fail по умолчанию приводит к сбою элемента с кодом отклика для каждого элемента 409 Conflict . Значение replace заменяет существующую роль для удостоверения ролью, указанной в элементе, и элемент завершается успешно. Любое другое значение приводит к сбою элемента с кодом ответа для каждого элемента 400 Bad Request .

Элементы обновления не должны содержать свойства, отличные от идентификаторов и ролей. Свойство roles является обязательным. Элементы, нарушающие любое правило, завершаются ошибкой с кодом ответа для каждого элемента 400 Bad Request .

Отклик

В случае успешного 200 OK выполнения этот метод возвращает код отклика и коллекцию объектов разрешений в тексте ответа. К успешно обработанным разрешениям относится объект разрешений . Неудачные элементы включают заметку @Core.DataModificationException со сведениями об ошибке.

Этот API также может возвращать следующие коды ответа на ошибки для всего запроса:

Код HTTP Описание
400 Неправильный запрос.
401 В запросе отсутствуют действительные учетные данные проверки подлинности.
403 Предоставленные учетные данные проверки подлинности являются допустимыми, но недостаточными для выполнения запрошенной операции. Примеры сценариев: вызывающее приложение не имеет разрешения на управление разрешениями для контейнеров этого типа, либо вызывающий пользователь не имеет разрешений на этот экземпляр контейнера, либо его роль не разрешает управление разрешениями контейнера.
404 Контейнер не существует.
423 Контейнер заблокирован. Например, контейнер архивируется.

Примеры

Запрос

В следующем примере показан один разностный запрос на исправление, который смешивает создание и обновление элементов в одном вызове. Элементы без идентификатора обрабатываются как операции создания; элементы с идентификатором обрабатываются как операции обновления. Элементы, которые завершаются сбоем, отображаются в виде заметки @Core.DataModificationException . Остальные элементы по-прежнему успешно выполнены.

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

Отклик

Ниже показан пример отклика. Первые две операции создания успешно выполняются. Вторая операция заменяет существующую роль для целевого пользователя. Третья операция создания завершается сбоем, так как удостоверение уже является членом контейнера с другой ролью. Первая операция обновления выполнена успешно. Вторая операция обновления завершается сбоем, так как не существует разрешения с этим идентификатором.

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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