Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Espacio de nombres: microsoft.graph
Upsert (crear o actualizar) hasta 40 objetos de permiso en un archivoStorageContainer en una sola solicitud. La revisión delta permite al autor de la llamada realizar varias operaciones (crear, actualizar) en varios permisos con una sola solicitud.
Importante
Los permisos agregados a un fileStorageContainer se aplican a todos sus objetos driveItem , independientemente de los permisos únicos o restrictivos aplicados a esos elementos.
Esta API está disponible en las siguientes implementaciones nacionales de nube.
| Servicio global | Gobierno de EE. UU. L4 | Us Government L5 (DOD) | China operada por 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Permissions
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
| Tipo de permiso | Permisos con privilegios mínimos | Permisos con privilegios más altos |
|---|---|---|
| Delegado (cuenta profesional o educativa) | FileStorageContainer.Selected | FileStorageContainer.Manage.All |
| Delegado (cuenta personal de Microsoft) | FileStorageContainer.Selected | No disponible. |
| Aplicación | FileStorageContainer.Selected | No disponible. |
Además de los permisos de Microsoft Graph, la aplicación también debe tener los permisos o permisos de nivel de tipo de contenedor necesarios para llamar a esta API. Para obtener más información sobre los tipos de contenedor, consulte Tipos de contenedor. Para obtener más información sobre los permisos de nivel de tipo contenedor, vea Autorización de SharePoint Embedded.
Solicitud HTTP
PATCH /storage/fileStorage/containers/{containerId}/permissions
Encabezados de solicitud
| Nombre | Descripción |
|---|---|
| Authorization | {token} de portador. Obligatorio. Obtenga más información sobre la autenticación y la autorización. |
| Content-Type | application/json. Obligatorio. |
Cuerpo de la solicitud
En el cuerpo de la solicitud, proporcione un objeto JSON con las siguientes propiedades.
| Nombre | Tipo | Descripción |
|---|---|---|
| @context | Cadena | Anotación de OData que identifica el tipo de carga. Debe establecerse en #$delta para indicar una operación de revisión diferencial. Obligatorio. |
| valor | Colección permission | Colección de hasta 40 objetos de permiso para procesar. Obligatorio. |
Cada entrada de la colección de valores representa una operación con un permiso. La presencia de la propiedad id determina cómo se interpreta la entrada. Incluya el identificador de un permiso existente para actualizarlo o omita el identificador para crear un nuevo permiso.
Cada entrada admite las siguientes propiedades y anotaciones:
| Nombre | Tipo | Descripción |
|---|---|---|
| id | Cadena | Identificador del permiso existente. Cuando el identificador está presente, el elemento se trata como una actualización. Cuando se omite el identificador, el elemento se trata como una operación de creación. Opcional. |
| grantedToV2 | sharePointIdentitySet | Para los permisos de tipo de usuario, especifique los detalles del usuario para este permiso. Necesario para las operaciones de creación. No especifique para las operaciones de actualización. |
| roles | Colección de cadenas | Tipo de permiso que se va a conceder. Los valores posibles son: reader, writer, manager y owner Necesario para las operaciones de creación y actualización. |
| @microsoft.graph.conflictBehavior | Cadena | Parámetro de anotación que controla el comportamiento cuando la identidad de destino ya es miembro del contenedor con un rol diferente. Los valores posibles son fail y replace. El valor predeterminado es fail. Solo se aplica a las operaciones de creación. Opcional. |
La anotación @microsoft.graph.conflictBehavior es por elemento. El valor fail predeterminado hace que el elemento produzca un error con un código de respuesta por elemento 409 Conflict . El valor replace reemplaza el rol existente de la identidad por el rol especificado en el elemento y el elemento se realiza correctamente. Cualquier otro valor hace que el elemento produzca un error con un código de respuesta por elemento 400 Bad Request .
Los elementos de actualización no deben incluir propiedades distintas del identificador y los roles. Se requiere la propiedad roles . Los elementos que infringen cualquiera de las reglas producen un error con un código de respuesta por elemento 400 Bad Request .
Respuesta
Si se ejecuta correctamente, este método devuelve un 200 OK código de respuesta y una colección de objetos de permiso en el cuerpo de la respuesta. Los permisos que se procesan correctamente incluyen un objeto de permiso . Los elementos con errores incluyen una anotación @Core.DataModificationException con detalles de error.
Esta API también podría devolver los siguientes códigos de respuesta de error para toda la solicitud:
| Código HTTP | Descripción |
|---|---|
| 400 | Solicitud incorrecta. |
| 401 | La solicitud carece de credenciales de autenticación válidas. |
| 403 | Las credenciales de autenticación proporcionadas son válidas pero insuficientes para realizar la operación solicitada. Escenarios de ejemplo: la aplicación que realiza la llamada no tiene permiso para administrar permisos para contenedores de este tipo, o el usuario que realiza la llamada no tiene permisos en esta instancia de contenedor o su rol no permite la administración de permisos de contenedor. |
| 404 | El contenedor no existe. |
| 423 | El contenedor está bloqueado. Por ejemplo, el contenedor se archiva. |
Ejemplos
Solicitud
En el ejemplo siguiente se muestra una única solicitud de revisión diferencial que combina crear y actualizar elementos en una llamada. Los elementos sin un identificador se tratan como operaciones de creación; Los elementos con un identificador se tratan como operaciones de actualización. Los elementos que producen un error se notifican en línea con una anotación @Core.DataModificationException . Los elementos restantes siguen siendo correctos.
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"]
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta. Los dos primeros elementos de creación se ejecutan correctamente (el segundo elemento reemplaza el rol existente para el usuario de destino). Se produce un error en el tercer elemento de creación porque la identidad ya es miembro del contenedor con un rol diferente. El primer elemento de actualización se realiza correctamente; se produce un error en el segundo porque no existe ningún permiso con ese identificador.
Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.
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"
}
]
}