Über Holds werden Daten auf unbestimmte Zeit aufbewahrt, um Aufbewahrungs- oder rechtliche Verpflichtungen zu erfüllen. In der Regel werden Holds für einen oder mehrere Nutzer verhängt, um zu verhindern, dass Daten, die für eine Rechtsangelegenheit relevant sind, gelöscht werden, bis diese Rechtsangelegenheit nicht mehr aktiv ist.
Wenn ein Nutzer, für den ein Hold verhängt wurde, Daten löscht, werden diese aus der Ansicht des Nutzers entfernt, aber in Google Vault aufbewahrt. Solange der Hold besteht, kann ein Vault-Administrator diese Daten suchen und exportieren.
Holds bestehen aus den folgenden Komponenten:
- Ein Dienst : Die Anwendung, die für die aufzubewahrenden Daten verantwortlich ist. Der Dienst kann auf „Mail“, „Drive“ oder „Groups“ festgelegt werden.
- Ein Bereich : Die Entitäten, die vom Hold abgedeckt werden. Der Bereich kann auf ein oder mehrere Nutzerkonten oder auf eine Organisationseinheit (OE) festgelegt werden.
- Zusätzliche Optionen (optional) : Die spezifischen Details (Suchanfragen oder Konfigurationsoptionen), die verwendet werden, um die aufzubewahrenden Daten innerhalb des definierten Bereichs einzugrenzen. Optionen:
- Mail, Groups: Suchanfrage, um den Hold einzugrenzen
- Drive: Geteilte Ablagen in den Hold einbeziehen
Um mit Vault-Ressourcen zu arbeiten, muss ein Konto die erforderlichen Vault-Berechtigungen und Zugriff auf die Rechtsangelegenheit haben. Für den Zugriff auf eine Rechtsangelegenheit muss ein Konto die Rechtsangelegenheit erstellt haben, die Rechtsangelegenheit muss für das Konto freigegeben worden sein oder das Konto muss die Berechtigung Alle Rechtsangelegenheiten abrufen haben. Eine Rechtsangelegenheit muss vorhanden sein, bevor Sie einen Hold erstellen können.
Hold für Mail für bestimmte Nutzerkonten mit einer Suchanfrage erstellen
Im folgenden Beispiel wird gezeigt, wie ein Hold namens „My First mail Accounts Hold“ für Folgendes erstellt wird:
- Dienst: Mail
- Entität: Nutzerkonten „user1“ und „user2“
- Zusätzliche Optionen: Suchanfrage „to:ceo@company.com“
Rufen Sie Nutzerkonto-IDs über die
Directory API ab. Für HeldAccount kann eine Konto-ID oder eine E‑Mail-Adresse verwendet werden. Wenn beides angegeben ist, wird die E‑Mail-Adresse verwendet und die Konto-ID ignoriert.
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()
Hold für Drive für eine Organisationseinheit erstellen und Inhalte aus geteilten Ablagen einbeziehen
Im folgenden Beispiel wird gezeigt, wie ein Hold namens „My First Drive OU Hold“ für Folgendes erstellt wird:
- Dienst: Drive
- Entität: Organisationseinheit „Finance“ (die Organisationseinheits-ID wird in „orgUnitId“ erfasst)
- Zusätzliche Optionen: Geteilte Ablagen einbeziehen, in denen Nutzer in dieser Organisationseinheit Mitglieder sind
Rufen Sie Organisationseinheits-IDs über die Directory API ab.
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()
Hold für Groups für bestimmte Gruppenkonten mit einem Datumsbereich erstellen
Im folgenden Beispiel wird gezeigt, wie ein Hold namens „My First Group Hold“ für Folgendes erstellt wird:
- Dienst: Groups
- Entität: Gruppenkonten „group1“ und „group2“
- Zusätzliche Optionen: Nur Nachrichten mit Sendedatum zwischen „startTime“ und „endTime“ aufbewahren
Rufen Sie Gruppenkonto-IDs über die Directory API ab.
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()
- Zeitstempelformat.
Außerdem werden
start/endTimesin GMT konvertiert und auf den Beginn des angegebenen Datums abgerundet.
Vorhandene Holds abfragen und ändern
Im folgenden Beispiel wird gezeigt, wie alle Konten aufgelistet werden, die in einem Hold enthalten sind.
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']
Im folgenden Beispiel wird gezeigt, wie ein Konto zu einem Hold hinzugefügt und daraus entfernt wird.
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()
Im folgenden Beispiel wird gezeigt, wie die Organisationseinheit für einen vorhandenen Hold geändert wird.
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()
Im folgenden Beispiel wird gezeigt, wie alle Holds für eine Rechtsangelegenheit aufgelistet werden.
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()