Migrar código desde la API de Drive

En este documento se explica cómo migrar código desde la API de Drive para gestionar permisos a la API de Data Studio. En el caso de los puntos de conexión comunes de la API de Drive, se muestra el código de la API de Data Studio correspondiente.

Archivos

En el caso de los puntos de conexión de los archivos de la API de Drive, la API de Data Studio solo tiene un punto de conexión equivalente al punto de conexión Files: list.

Lista

API Método Punto de conexión
Drive POST /drive/v3/files/fileId/permissions
Data Studio GET /v1/assets:search

Comparación:

Drive

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
fetch(`https://www.googleapis.com/drive/v3/files`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "POST",
})

Data Studio

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
fetch(`https://datastudio.googleapis.com/v1/assets:search?assetTypes={ASSET_TYPE}`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  }
})

Consulta cuáles son los elementos de búsqueda.

Permisos

Create, Delete y Get

API Método Punto de conexión
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

No hay puntos de conexión correspondientes en la API de Data Studio para gestionar varios objetos Permissions. Solo hay un objeto de permisos para cada elemento de Data Studio y siempre existe.

Lista

No hay una coincidencia exacta entre Drive y Data Studio, pero los puntos de conexión cumplen funciones similares. La principal diferencia es que un archivo de Drive puede tener muchos objetos de permisos, mientras que un archivo de Data Studio solo tiene uno.

API Método Punto de conexión
Drive GET /drive/v3/files/fileId/permissions
Data Studio GET /v1/assets/assetId/permissions

Comparación:

Drive

En las siguientes líneas de código se enumeran todos los objetos de permisos de la API de Drive. En función de tu código, puedes llamar a este método varias veces mediante tokens de paginación (como se muestra en el ejemplo) para asegurarte de que puedes ver todos los permisos habilitados en un archivo.

const fileId = '123'; // This should be replaced with a valid Drive ID.
const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
let nextPageToken = undefined;
let permissions = [];
do {
  const permissionsData = await fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions`, {
    headers: {
      Authorization: `Bearer ${oAuthToken}`
    }
  });
  nextPageToken = permissionsData.nextPageToken;
  permissions = permissions.concat(permissionsData.permissions)
} while (nextPageToken !== undefined);

Data Studio

Dado que solo hay un objeto de permisos para cada elemento de Data Studio, no es necesario tener en cuenta la paginación.

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
const assetId = '123' // This should be replaced with a valid asset ID.
fetch(`https://datastudio.googleapis.com/v1/assets/{ASSET_ID}/permissions`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  }
}

Consulta Obtener.

Actualizar

Al actualizar los permisos, las API de Data Studio y de Drive funcionan de forma muy similar. La principal diferencia es que no puedes definir un valor expirationTime en un permiso de Data Studio.

API Método Punto de conexión
Drive PATCH /drive/v3/files/fileId/permissions/permissionId
Data Studio PATCH /v1/assets/assetId/permissions

Comparación:

Drive

const fileId = '123'; // This should be replaced with a valid Drive ID.
const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
const newPermissionsObject = {
  expirationTime: '...',
  role: 'owner', // Or any other option
}
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions/permissionId`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "PATCH",
  body: JSON.stringify(newPermissionsObject)
})

Data Studio

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
const assetId = '123' // This should be replaced with a valid asset ID.
const newPermissionsObject = {
  permissions: {
    //...
  }
}

fetch(`https://datastudio.googleapis.com/v1/assets/${assetId}/permissions`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "PATCH",
  body: JSON.stringify({
    assetId: assetId,
    permissions: newPermissionsObject
  })
})

Si necesitas alternativas para casos específicos, consulta los siguientes recursos: