دادهها را به طور نامحدود برای برآورده کردن تعهدات قانونی یا حفاظتی نگه میدارد. معمولاً، نگهداریها روی یک یا چند کاربر اعمال میشود تا اطمینان حاصل شود که دادههای مربوط به یک موضوع تا زمانی که آن موضوع دیگر فعال نباشد، قابل حذف نیستند.
اگر کاربری که مشمول محدودیت دسترسی است، دادههای ذخیرهشده را حذف کند، دادهها از دید کاربر حذف میشوند، اما در Google Vault حفظ میشوند. تا زمانی که محدودیت برقرار باشد، مدیر Vault میتواند آن دادهها را جستجو و صادر کند.
نگهدارندهها دارای اجزای زیر هستند:
- یک سرویس. برنامهای که مسئول نگهداری دادهها است. این سرویس میتواند روی ایمیل، درایو یا گروهها تنظیم شود.
- یک محدوده. موجودیتهای تحت پوششِ نگهداری. محدوده میتواند روی یک یا چند حساب کاربری یا روی یک واحد سازمانی (OU) تنظیم شود.
- گزینههای اضافی (اختیاری). جزئیات خاص (پرسشهای جستجو یا گزینههای پیکربندی) که برای محدود کردن دادههایی که باید در محدوده تعریفشده نگهداری شوند، استفاده میشوند. گزینهها عبارتند از:
- ایمیل، گروهها: عبارت جستجو برای محدود کردن تعداد انتظار
- درایو: درایوهای مشترک را در انبار قرار دهید
برای کار با منابع Vault، یک حساب کاربری باید امتیازات لازم Vault و دسترسی به موضوع را داشته باشد. برای دسترسی به یک موضوع، یک حساب کاربری باید آن موضوع را ایجاد کرده باشد، موضوع را با آنها به اشتراک گذاشته باشد یا امتیاز مشاهده همه موضوعات را داشته باشد. قبل از اینکه بتوانید یک موضوع را نگه دارید، باید وجود داشته باشد.
با استفاده از یک عبارت جستجو، ایمیلهای حسابهای کاربری خاص را موقتاً مسدود کنید
مثال زیر نشان میدهد که چگونه یک hold با نام "My First mail Accounts Hold" برای موارد زیر ایجاد میشود:
- سرویس: پستی
- موجودیت: حسابهای کاربری "user1" و "user2"
- گزینههای اضافی: عبارت جستجوی "to:ceo@company.com"
بازیابی شناسههای حساب کاربری از API دایرکتوری . حساب HeldAccount میتواند شناسه حساب یا ایمیل را دریافت کند. اگر هر دو داده شوند، ایمیل استفاده شده و شناسه حساب نادیده گرفته میشود.
جاوا
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();
پایتون
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()
ایجاد یک فضای ذخیرهسازی برای درایو در یک واحد سازمانی (OU) و گنجاندن محتوای درایو اشتراکی
مثال زیر نشان میدهد که چگونه یک hold با نام "My First Drive OU Hold" برای موارد زیر ایجاد میشود:
- سرویس: رانندگی
- موجودیت: واحد سازمانی "مالی" (شناسه OU در orgUnitId ثبت شده است)
- گزینههای اضافی: شامل درایوهای اشتراکی که کاربران این واحد سازمانی عضو آنها هستند
شناسههای واحد سازمانی را از API دایرکتوری بازیابی کنید.
جاوا
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;
پایتون
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" را نگه دارید
شناسههای حسابهای گروهی را از API دایرکتوری بازیابی کنید.
جاوا
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();
پایتون
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()
- قالب مهر زمان . علاوه بر این،
start/endTimesبه GMT تبدیل شده و به ابتدای تاریخ داده شده گرد میشوند.
پرسوجو و اصلاح نگهدارندههای موجود
مثال زیر نحوه فهرست کردن تمام حسابهای موجود در یک انبار را نشان میدهد.
جاوا
client.matters().holds().accounts().list(matterId, holdId).execute().getAccounts();
پایتون
# 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']
مثال زیر نحوه اضافه کردن و حذف یک حساب از یک انبار را نشان میدهد.
جاوا
// 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();
پایتون
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()
مثال زیر نحوه تغییر واحد سازمانی در یک انبار موجود را نشان میدهد.
جاوا
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;
پایتون
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()
مثال زیر نحوه فهرست کردن همه احتکارهای یک موضوع را نشان میدهد.
جاوا
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(); }
پایتون
# 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()