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
Importante
Las API de la versión /beta de Microsoft Graph están sujetas a cambios. No se admite el uso de estas API en aplicaciones de producción. Para determinar si una API está disponible en la versión 1.0, use el selector de Versión.
Upsert (crear o actualizar) hasta 40 objetos de permiso en un fileStorageContainer en una sola solicitud. La revisión diferencial 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 en la nube nacional.
| Servicio global | Administración pública de EE. UU. | Gobierno de EE. UU. L5 (DOD) | China operado por 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Permissions
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use uno o varios permisos con privilegios más altos 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. |
Nota:
Además de los permisos de Microsoft Graph, la aplicación debe tener los permisos de nivel de contenedor necesarios para llamar a esta API. Para obtener más información, consulte Tipos de contenedor. Para obtener más información sobre los permisos de nivel de tipo de contenedor, consulte 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 autenticación y 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 OData que identifica el tipo de carga. Debe establecerse para #$delta indicar una operación de parche delta. Obligatorio. |
| valor | Colección permission | Una colección de hasta 40 objetos de permiso para procesar. Obligatorio. |
Cada entrada de la colección de valores representa una operación de un permiso. La presencia de la propiedad id determina cómo se interpreta la entrada. Incluya el identificador de un permiso existente para actualizarlo u omita para crear un nuevo permiso.
Cada entrada admite las siguientes propiedades y anotaciones:
| Nombre | Tipo | Descripción |
|---|---|---|
| id | Cadena | El id. 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 las operaciones de actualización. |
| roles | Colección de cadenas | El 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 artículo. El valor fail predeterminado hace que el elemento falle con un código de respuesta por elemento 409 Conflict . El valor replace reemplaza la función existente de la identidad por la función especificada en el elemento, y el elemento se realiza correctamente. Cualquier otro valor hace que el elemento falle con un código de respuesta por elemento 400 Bad Request .
Los elementos de actualización no deben incluir propiedades que no sean id. y roles. La propiedad roles es necesaria. Los elementos que infringen cualquiera de las reglas producen un error con un código de respuesta por elemento 400 Bad Request .
Respuesta
Si tiene éxito, 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 del error.
Esta API también puede 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 llama no tiene permiso para administrar permisos para contenedores de este tipo, o el usuario que llama 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 elementos de creación y actualización 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 errores se notifican en línea con una anotación @Core.DataModificationException . Los elementos restantes siguen siendo correctos.
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"]
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta. Las dos primeras operaciones de creación se realizan correctamente. La segunda operación reemplaza la función existente para el usuario de destino. Se produce un error en la tercera operación de creación porque la identidad ya es miembro del contenedor con un rol diferente. La primera operación de actualización se realiza correctamente. Se produce un error en la segunda operación de actualización 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/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"
}
]
}