Cómo migrar desde la API de Drive

En este documento, se describe cómo migrar código de la API de Drive para la administración de permisos a la API de Data Studio. Para los extremos comunes de la API de Drive, se muestra el código de la API de Data Studio correspondiente.

Archivos

En el caso de los extremos de archivos de la API de Drive, la API de Data Studio solo tiene un extremo equivalente para el extremo Files: list.

Lista

API Método Extremo
Drive POST /drive/v3/files
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 recursos de búsqueda.

Permisos

Create, Delete, And Get

API Método Extremo
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 endpoints correspondientes en la API de Data Studio para administrar varios objetos Permissions. Solo hay un objeto de permisos para un activo de Data Studio, y siempre existe.

Lista

No hay una correspondencia 1 a 1 entre Drive y Data Studio, pero los extremos cumplen objetivos similares. La principal diferencia es que un archivo de Drive puede tener muchos objetos de permisos, mientras que Data Studio tiene exactamente uno.

API Método Extremo
Drive GET /drive/v3/files/fileId/permissions
Data Studio GET /v1/assets/assetId/permissions

Comparación:

Drive

El siguiente código enumera todos los objetos de permisos de la API de Drive. Según tu código, puedes llamar a este método varias veces con tokens de paginación (como se muestra) para asegurarte de que puedes ver todos los permisos establecidos para 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

Como solo hay un objeto de permiso para un activo de Data Studio, no tienes que 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 cómo obtener permisos.

Actualizar

Las APIs de Data Studio y Drive tienen una funcionalidad muy similar para actualizar permisos. La principal diferencia es que no puedes establecer un expirationTime en un permiso de Data Studio.

API Método Extremo
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({
    name: assetId,
    permissions: newPermissionsObject
  })
})

Para obtener alternativas específicas de casos de uso, consulta los siguientes vínculos: