I blocchi trattengono i dati per un periodo indeterminato al fine di adempiere a obblighi di legge o di conservazione a fini legali. In genere, i blocchi vengono applicati a uno o più utenti per garantire che i dati pertinenti a una pratica non possano essere eliminati finché la pratica non è più attiva.
Se un utente soggetto a un blocco elimina i dati bloccati, questi vengono rimossi dalla visualizzazione dell'utente, ma vengono conservati in Google Vault. Fintanto che il blocco sarà in vigore, un amministratore di Vault potrà cercare ed esportare i dati.
I blocchi hanno i seguenti componenti:
- Un servizio. L'applicazione responsabile dei dati da bloccare. Il servizio può essere impostato su Posta, Drive o Gruppi.
- Un ambito. Le entità coperte dal blocco. L'ambito può essere impostato su uno o più account utente o su un'unità organizzativa.
- Opzioni aggiuntive (facoltative). I dettagli specifici (query di ricerca o opzioni di configurazione) utilizzati per restringere i dati da bloccare nell'ambito definito. Le opzioni includono:
- Posta, Gruppi: query di ricerca per restringere il blocco
- Drive: includi i Drive condivisi nel blocco
Per utilizzare le risorse di Vault, un account deve disporre dei privilegi di Vault richiesti e dell'accesso alla pratica. Per accedere a una pratica, un account deve averla creata, deve averla condivisa con l'account o deve disporre del privilegio Visualizzazione di tutte le pratiche. Prima di poter creare un blocco, deve esistere una pratica.
Creare un blocco per la posta su account utente specifici con una query di ricerca
Il seguente esempio mostra come viene creato un blocco denominato "My First mail Accounts Hold" per:
- Servizio: posta
- Entità: account utente "user1" e "user2"
- Opzioni aggiuntive: query di ricerca "to:ceo@company.com"
Recupera gli ID degli account utente dall'
API Directory. Il HeldAccount può accettare un ID account o un indirizzo email. Se vengono forniti entrambi, viene utilizzato l'indirizzo email e l'ID account viene ignorato.
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()
Creare un blocco per Drive su un'unità organizzativa e includere i contenuti dei Drive condivisi
Il seguente esempio mostra come viene creato un blocco denominato "My First Drive OU Hold" per:
- Servizio: Drive
- Entità: unità organizzativa "Finance" (l'ID unità organizzativa viene acquisito in orgUnitId)
- Opzioni aggiuntive: includi i Drive condivisi di cui sono membri gli utenti di questa unità organizzativa
Recupera gli ID delle unità organizzative dall'API 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()
Creare un blocco per Gruppi su account di gruppo specifici con un intervallo di date
Il seguente esempio mostra come viene creato un blocco denominato "My First Group Hold" per:
- Servizio: Gruppi
- Entità: account di gruppo "group1" e "group2"
- Opzioni aggiuntive: blocca solo i messaggi con date di invio comprese tra "startTime" e "endTime"
Recupera gli ID degli account di gruppo dall' API 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 del timestamp.
Inoltre,
start/endTimesvengono convertiti in GMT e arrotondati per difetto all'inizio della data specificata.
Eseguire query e modificare i blocchi esistenti
Il seguente esempio mostra come elencare tutti gli account inclusi in un blocco.
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']
Il seguente esempio mostra come aggiungere e rimuovere un account da un blocco.
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()
Il seguente esempio mostra come modificare l'unità organizzativa in un blocco esistente.
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()
Il seguente esempio mostra come elencare tutti i blocchi per una pratica.
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()