Las conservaciones preservan los datos de forma indefinida para satisfacer obligaciones legales o de conservación. Por lo general, las conservaciones se aplican a uno o más usuarios para garantizar que los datos relevantes para un asunto no se puedan borrar hasta que este ya no esté activo.
Si un usuario sujeto a una conservación borra datos conservados, estos se quitan de la vista del usuario, pero se preservan en Google Vault. Mientras la conservación esté vigente, un administrador de Vault puede buscar y exportar esos datos.
Las conservaciones tienen los siguientes componentes:
- Un servicio. Es la aplicación responsable de los datos que se conservarán. El servicio se puede configurar como correo, Drive o Grupos.
- Un alcance. Son las entidades que abarca la conservación. El alcance se puede establecer en una o más cuentas de usuario, o en una unidad organizativa (UO).
- Opciones adicionales (opcional). Son los detalles específicos (consultas de búsqueda o opciones de configuración) que se usan para limitar los datos que se conservarán dentro del alcance definido. Las opciones incluyen lo siguiente:
- Correo y Grupos: Consulta de búsqueda para limitar la conservación
- Drive: Incluir unidades compartidas en la conservación
Para trabajar con los recursos de Vault, una cuenta debe tener los privilegios de Vault necesarios y acceso al asunto. Para acceder a un asunto, una cuenta debe haberlo creado, tenerlo compartido o tener el privilegio Ver todos los asuntos. Un asunto debe existir antes de que puedas crear una conservación.
Crea una conservación para el correo en cuentas de usuario específicas con una consulta de búsqueda
En el siguiente ejemplo, se muestra cómo se crea una conservación llamada "My First mail Accounts Hold" para lo siguiente:
- Servicio: correo
- Entidad: cuentas de usuario "user1" y "user2"
- Opciones adicionales: consulta de búsqueda "to:ceo@company.com"
Recupera los IDs de las cuentas de usuario de la
API de Directory. HeldAccount puede tomar un ID de cuenta o un correo electrónico. Si se proporcionan ambos, se usa el correo electrónico y se ignora el ID de la cuenta.
Java
HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:ceo@company.com"); Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(user1accountId)); accounts.add(new HeldAccount().setEmail(user2Email)); Hold hold = new Hold() .setName("My First mail Accounts Hold") .setCorpus("MAIL"); .setQuery(new CorpusQuery().setMailQuery(mailQuery)) .setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_mail_accounts(service, matter_id, account_id): mail_query = {'terms': 'to:ceo@company.com'} accounts = [ {'accountId': user1_account_id}, {'email': user2_email} ] wanted_hold = { 'name': 'My First mail Accounts Hold', 'corpus': 'MAIL', 'query': { 'mailQuery': mail_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Crea una conservación para Drive en una UO e incluye contenido de unidades compartidas
En el siguiente ejemplo, se muestra cómo se crea una conservación llamada "My First Drive OU Hold" para lo siguiente:
- Servicio: Drive
- Entidad: unidad organizativa "Finance" (el ID de la UO se captura en orgUnitId)
- Opciones adicionales: incluye unidades compartidas de las que son miembros los usuarios de esta unidad organizativa
Recupera los IDs de las unidades organizativas de la API de Directory.
Java
HeldOrgUnit orgUnit = new HeldOrgUnit().setOrgUnitId(orgUnitId); // Include shared drives content. HeldDriveQuery driveQuery = new HeldDriveQuery().setIncludeSharedDriveFiles(true); // Create the hold. Hold hold = new Hold() .setName("My First Drive OU Hold") .setCorpus("DRIVE") .setQuery(new CorpusQuery().setDriveQuery(driveQuery)) .setOrgUnit(orgUnit); Hold createdHold = client.matters().holds().create(matterId, hold).execute(); return createdHold;
Python
def create_hold_drive_org(service, matter_id, org_unit_id): drive_query = {'includeSharedDriveFiles': True} org_unit = {'orgUnitId': org_unit_id} wanted_hold = { 'name': 'My First Drive OU Hold', 'corpus': 'DRIVE', 'orgUnit': org_unit, 'query': { 'driveQuery': drive_query } } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Crea una conservación para Grupos en cuentas de grupo específicas con un período
En el siguiente ejemplo, se muestra cómo se crea una conservación llamada "My First Group Hold" para lo siguiente:
- Servicio: Grupos
- Entidad: cuentas de grupo "group1" y "group2"
- Opciones adicionales: conserva solo los mensajes con fechas de envío entre "startTime" y "endTime"
Recupera los IDs de las cuentas de grupo de la API de Directory.
Java
String APRIL_2_2017_GMT = "2017-04-02T00:00:00Z"; // See below for format*. Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(accountId)); accounts.add(new HeldAccount().setAccountId(accountId2)); HeldGroupsQuery groupQuery = new HeldGroupsQuery(); // Restrict by sent date. groupQuery.setStartTime(APRIL_2_2017_GMT); groupQuery.setEndTime(APRIL_2_2017_GMT); // create the hold Hold hold = new Hold() .setName("My First Group Hold") .setCorpus("GROUPS") .setQuery(new CorpusQuery().setGroupsQuery(groupQuery)); hold.setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_groups_date_range(service, matter_id, group_account_id): groups_query = { 'startTime': '2017-04-02T00:00:00Z', # See below for format* 'endTime': '2017-04-02T00:00:00Z' } accounts = [{'accountId': group_account_id}] wanted_hold = { 'name': 'My First Group Hold', 'corpus': 'GROUPS', 'query': { 'groupsQuery': groups_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
- Formato de marca de tiempo.
Además,
start/endTimesse convierten a GMT y se redondean al inicio de la fecha determinada.
Consulta y modifica las conservaciones existentes
En el siguiente ejemplo, se muestra cómo enumerar todas las cuentas incluidas en una conservación.
Java
client.matters().holds().accounts().list(matterId, holdId).execute().getAccounts();
Python
# If no accounts are on hold, ['accounts'] will raise an error. def list_held_accounts(service, matter_id, hold_id): return service.matters().holds().accounts().list( matterId=matter_id, holdId=hold_id).execute()['accounts']
En el siguiente ejemplo, se muestra cómo agregar y quitar una cuenta de una conservación.
Java
// Add an account by ID. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setAccountId(accountId)) .execute(); // Remove an account by ID. client.matters().holds().accounts().delete(matterId, holdId, accountId).execute(); String email = "email@email.com"; // Add an account by email. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setEmail(email)) .execute();
Python
def add_held_account(service, matter_id, hold_id, account_id): held_account = {'accountId': account_id} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute() def remove_held_account(service, matter_id, hold_id, account_id): return service.matters().holds().accounts().delete( matterId=matter_id, holdId=hold_id, accountId=account_id).execute() def add_held_account(service, matter_id, hold_id, email): held_account = {'email': email} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute()
En el siguiente ejemplo, se muestra cómo modificar la unidad organizativa en una conservación existente.
Java
Hold hold = client.matters().holds().get(matterId, holdId).execute(); hold.getOrgUnit().setOrgUnitId(newOrgUnitId); Hold modifiedHold = client.matters().holds().update(matterId, holdId, hold).execute(); return modifiedHold;
Python
def update_hold_ou(service, matter_id, hold_id, org_unit_id): current_hold = get_hold(matter_id, hold_id) current_hold['orgUnit'] = {'orgUnitId': org_unit_id} return service.matters().holds().update( matterId=matter_id, holdId=hold_id, body=current_hold).execute()
En el siguiente ejemplo, se muestra cómo enumerar todas las conservaciones de un asunto.
Java
String matterId = "Matter Id"; // List all holds. ListholdsList = client.matters().holds().list(matterId).execute().getHolds(); // Paginate on holds. ListHoldsResponse response = client .matters() .holds() .list(matterId) .setPageSize(10) .execute(); String nextPageToken = response.getNextPageToken(); if (nextPageToken != null) { client .matters() .holds() .list(matterId) .setPageSize(10) .setPageToken(nextPageToken) .execute(); }
Python
# This can paginate in the same manner as with matters. def list_holds(service, matter_id): return service.matters().holds().list(matterId=matter_id).execute()