Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространство имен: microsoft.graph
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/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"]
}
]
}
Отклик
Ниже показан пример отклика. Первые два элемента успешно создаются (второй элемент заменяет существующую роль для целевого пользователя). Третий элемент создания завершается ошибкой, так как удостоверение уже является членом контейнера с другой ролью. Первый элемент обновления завершается успешно; сбой второго из-за отсутствия разрешения с этим идентификатором.
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.
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"
}
]
}