Usar elementos remotos para obtener acceso a archivos y carpetas compartidos
OneDrive admite la adición de una carpeta compartida en una unidad para facilitar el acceso de contenido desde una carpeta compartida. Cuando se agrega una carpeta compartida a OneDrive, la carpeta aparece en la raíz, y su contenido se sincroniza con el cliente de sincronización de OneDrive.
Al enumerar una colección de elementos, las carpetas compartidas aparecen como elementos con la faceta remoteItem. Esta faceta incluye la información necesaria para tener acceso al contenido de la carpeta compartida con la API de OneDrive.
Agregar una carpeta compartida a la unidad de usuario
Antes de que una carpeta compartida pueda agregarse a la unidad de usuario, deben cumplirse los siguientes requisitos:
- El usuario tiene permiso explícito a la carpeta compartida, y no tiene acceso a la carpeta compartida mediante un vínculo.
- La aplicación necesita acceso de escritura y lectura para la unidad donde se agregará la carpeta compartida.
Nota: Una carpeta compartida solo puede agregarse a la raíz de la unidad de un usuario.
Para agregar la carpeta compartida a una unidad, la aplicación publica en la colección raíz de la unidad los detalles de la carpeta compartida en la faceta remoteItem. Por ejemplo:
POST /drive/root/children
Content-Type: application/json
{
"name": "Team Documents",
"remoteItem": {
"id": "12345abcde!1221",
"parentReference": { "driveId": "12345abcde" }
}
}
Nota: se requiere driveId e id.
Si se realiza correctamente, el servicio responde con los detalles completos del elemento remoto creado:
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "98765432!12399",
"name": "Team Documents",
"remoteItem": {
"id": "12345abcde!1221",
"parentReference": {
"driveId": "12345abcde"
},
"folder": { "childCount": 15 }
},
"lastModifiedDateTime": "2015-08-10T13:47:11Z",
"createdDateTime": "2015-08-10T13:47:11Z",
}
Quitar una carpeta compartida de la unidad de usuario
Para quitar una carpeta compartida, simplemente elimine el elemento remoto:
DELETE /drive/items/{local-item-id}
Esto devolverá un mensaje 204 - No hay contenido si la carpeta compartida se ha quitado correctamente. Esto no elimina la carpeta compartida ni los elementos que se incluyen en la carpeta compartida.
HTTP/1.1 204 No Content
Enumerar el contenido de una carpeta compartida
Un elemento remoto proporciona la información necesaria para realizar una llamada al elemento actual que representa. El elemento remoto es un marcador de posición en la unidad del usuario para ese elemento, pero no puede accederse como un elemento de la unidad de usuario. Por ejemplo, solicitar la colección children para un elemento remoto provocará un error del servidor.
En este ejemplo, considere el elemento remoto siguiente:
{
"id": "98765432!12399",
"name": "Team Documents",
"remoteItem": {
"id": "12345abcde!1221",
"parentReference": {
"driveId": "12345abcde"
}
},
"lastModifiedDateTime": "2015-08-10T13:47:11Z",
"createdDateTime": "2015-08-10T13:47:11Z"
}
Para enumerar el contenido de esta carpeta compartida, la propiedad remoteItem se usa para crear una solicitud en la carpeta compartida que se incluye en la unidad remota.
GET /drives/{drive-id}/items/{item-id}/children
En este ejemplo se devuelven los elementos secundarios de la carpeta compartida, llamando a la unidad principal de la carpeta compartida.
HTTP/1.1 200 OK
Content-Type: application/json
{
"value":
[
{
"id": "12345abcde!9912",
"name": "Team Roster.xlsx",
"file": { },
"size": 90122
}
]
}
Usar Delta con elementos remotos
Al usar delta en una unidad con carpetas compartidas, estas se devolverán como parte de la respuesta pero los elementos que se incluyen en una carpeta compartida no se devolverán. Una llamada independiente a delta y un token delta en caché independiente se necesitan para cada carpeta compartida.
Mover elementos en una carpeta compartida
La API de OneDrive no admite mover o copiar elementos en una carpeta compartida. Los elementos nuevos pueden crearse en la carpeta con las acciones de carga regulares y tener como destino el recurso remoteItem driveId y id.