החזקות משמשות לשמירת נתונים ללא הגבלת זמן כדי לעמוד בהתחייבויות משפטיות או בהתחייבויות לשמירה. בדרך כלל, החרגות מוטלות על משתמש אחד או יותר כדי להבטיח שלא ניתן יהיה למחוק את הנתונים שעשויים להיות רלוונטיים לנושא מסוים עד שהנושא הזה לא יהיה פעיל יותר.
אם משתמש שכפוף להחזקה מחק נתונים שנשמרו, הנתונים האלה יוסרו מהתצוגה של המשתמש, אבל הם יישמרו ב-Vault. כל עוד ההחזקה בתוקף, אדמין ב-Vault יכול לחפש את הנתונים האלה ולייצא אותם.
החיובים המושהים כוללים את הרכיבים הבאים:
- שירות – האפליקציה שאחראית על הנתונים שרוצים לשמור. אפשר להגדיר את השירות לאימייל, ל-Drive או לקבוצות.
- היקף – הישויות שמוגדרות בהחזקה. אפשר להגדיר את ההיקף לחשבון משתמש אחד או יותר, או ליחידה ארגונית (OU).
- אפשרויות נוספות (אופציונלי) – הפרטים הספציפיים (שאילתות חיפוש או אפשרויות הגדרה) שמשמשים לצמצום הנתונים שיאוחסנו בהיקף המוגדר. האפשרויות כוללות:
- mail, Groups: search query to narrow down the hold
- Drive: הוספת תיקיות אחסון שיתופי להחזקה
כדי לעבוד עם משאבי Vault, לחשבון צריכות להיות ההרשאות הנדרשות ל-Vault וגישה לנושא. כדי לגשת לבקשת תמיכה, החשבון צריך ליצור אותה, היא צריכה להיות משותפת איתו או שיש לו את ההרשאה הצגת כל בקשות התמיכה.
יצירת החזקה לצורך משפטי של דואר בחשבונות משתמשים ספציפיים באמצעות שאילתה לחיפוש
בדוגמה הבאה מוצגת יצירת השהייה בשם 'השהיית חשבונות האימייל הראשונה שלי' עבור:
- שירות: mail
- ישות: חשבונות משתמשים 'user1' ו-'user2'
- אפשרויות נוספות: שאילתה לחיפוש "to:ceo@company.com"
אחזור מזהי חשבונות משתמשים מ-AdminSdk. חשוב לזכור שאפשר להזין ב-HeldAccount מזהה חשבון או כתובת אימייל. אם מציינים את שניהם, המערכת משתמשת בכתובת האימייל ומתעלם ממזהה החשבון.
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 ב-OU והכללת תוכן של אחסון שיתופי
בדוגמה הבאה מוסבר איך נוצרת השהיה בשם 'My First Drive OU Hold' עבור:
- שירות: Drive
- ישות: היחידה הארגונית 'פיננסים' (מזהה היחידה הארגונית מתועד ב-orgUnitId)
- אפשרויות נוספות: לכלול תיקיות אחסון שיתופי שהמשתמשים ביחידה הארגונית הזו חברים בהן
אחזור מזהי OU מ-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()
יצירת השהייה לקבוצות בחשבונות קבוצתיים ספציפיים לפי טווח תאריכים
בדוגמה הבאה מוצגת יצירת החזקה בשם 'החזקה קבוצתית ראשונה שלי' עבור:
- שירות: קבוצות
- ישות: חשבונות הקבוצה '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()
בדוגמה הבאה מוסבר איך לשנות את ה-OU בהשהיה קיימת של OU:
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()