בהחזקות לצורך משפטי נתונים נשמרים ללא הגבלת זמן כדי לעמוד בהתחייבויות משפטיות או בהתחייבויות שימור. בדרך כלל מתבצעת החזקה לצורך משפטי למשתמש אחד או יותר, כדי לוודא שלא ניתן למחוק את הנתונים שעשויים להיות רלוונטיים בעניין עד שהעניין הזה יפסיק להיות פעיל.
אם משתמש שחלה עליו החזקה לצורך משפטי מוחק נתונים בהחזקה, הנתונים האלו מוסרים מהתצוגה של המשתמש, אבל הם נשמרים ב-Vault. כל עוד השמירה בתוקף, אדמין ב-Vault יכול לחפש את הנתונים האלה ולייצא אותם.
החזקות לצורך משפטי כוללות את הרכיבים הבאים:
- שירות – האפליקציה שאחראית על שמירת הנתונים. ניתן להגדיר את השירות בתור אימייל, Drive או קבוצות Google.
- היקף – הישויות שעליהן חלה ההחזקה. אפשר להגדיר את ההיקף לחשבון משתמש אחד או יותר, או ליחידה ארגונית (OU).
- אפשרויות נוספות (אופציונלי) – הפרטים הספציפיים (שאילתות חיפוש או אפשרויות הגדרה) המשמשים לצמצום הנתונים לשמירה במסגרת ההיקף שהוגדר. האפשרויות כוללות:
- mail, קבוצות: שאילתת חיפוש לצמצום ההשהיה
- Drive: כולל תיקיות אחסון שיתופי בהחזקה
כדי לעבוד עם המשאבים של Vault, לחשבון צריכות להיות ההרשאות הנדרשות ל-Vault והגישה אליו. כדי לגשת לעניין, החשבון צריך ליצור את העניין, לשתף איתו את העניין או לקבל את ההרשאה View All Matters.
יצירת החזקה לצורך משפטי של אימיילים בחשבונות משתמשים ספציפיים הכוללים שאילתת חיפוש
הדוגמה הבאה מראה איך החזקה בשם "החזקה של חשבונות הדואר הראשונים שלי" נוצרת עבור:
- שירות: דואר
- ישות: חשבונות משתמש "user1" ו-"user2"
- אפשרויות נוספות: שאילתת חיפוש "to:ceo@company.com"
אחזור מזהים של חשבונות משתמשים מ-AdminSdk. שימו לב שהחשבון המנוהל יכול לקבל מספר חשבון או כתובת אימייל. אם תזינו את שניהם, המערכת תשתמש בכתובת האימייל ותתעלם ממספר החשבון.
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()
יצירת החזקה לצורך משפטי ל-Drive ביחידה ארגונית והוספת תוכן מהאחסון השיתופי
בדוגמה הבאה מוצגת החזקה בשם 'החזקה הארגונית הראשונה שלי ב-Drive' עבור:
- שירות: Drive
- ישות: היחידה הארגונית "Finance" (מזהה היחידה הארגונית מתועד ב-orgUnitId)
- אפשרויות נוספות: הכללת תיקיות אחסון שיתופי שמשתמשים ביחידה הארגונית הזו חברים בהן
אחזור מזהי יחידות ארגוניות מ-AdminSdk.
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()
יצירת החזקה לצורך משפטי בקבוצות Google בחשבונות קבוצתיים ספציפיים עם טווח תאריכים
הדוגמה הבאה מראה איך החזקה בשם "החזקה הקבוצתית הראשונה שלי" נוצרת עבור:
- שירות: קבוצות
- ישות: חשבונות קבוצתיים 'group1' ו-'group2'
- אפשרויות נוספות: החזקה של רק הודעות שהתאריכים שלהן נשלחו בין "startTime" ל-"endTime"
אחזור מספרי חשבונות של קבוצות מ-AdminSdk.
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()
- הפורמט של חותמת הזמן. בנוסף, זמני התחלה/סיום מומרים ל-GMT ומעוגלים כלפי מטה לתחילת התאריך הנתון.
שליחת שאילתות ושינוי של החזקות קיימות
הדוגמה הבאה מראה איך ליצור רשימה של כל החשבונות הכלולים בהחזקה קיימת:
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']
הדוגמה הבאה מראה איך להוסיף חשבון להחזקה קיימת ואיך להסיר חשבון ממנה:
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()
הדוגמה הבאה מראה איך לשנות את היחידה הארגונית בהחזקה ארגונית קיימת:
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()
הדוגמה הבאה מראה איך ליצור רשימה של כל ההחזקות לצורך משפטי של עניין מסוים:
Java
String matterId = "Matter Id";// List all holds. List
holdsList = 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()