دادهها را به طور نامحدود برای برآورده کردن تعهدات قانونی یا حفاظتی نگه میدارد. معمولاً این نگهداریها روی یک یا چند کاربر اعمال میشود تا اطمینان حاصل شود که دادههای بالقوه مرتبط با یک موضوع تا زمانی که آن موضوع دیگر فعال نباشد، قابل حذف نیستند.
اگر کاربری که مشمول محدودیت دسترسی است، دادههای ذخیرهشده را حذف کند، آن دادهها از دید کاربر حذف میشوند، اما در 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 ثبت شده است)
- گزینههای اضافی: شامل درایوهای اشتراکی که کاربران این واحد سازمانی عضو آنها هستند
شناسههای OU را از 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()
- قالب مهر زمان . علاوه بر این، زمانهای شروع/پایان به 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()
مثال زیر نحوه تغییر OU روی یک OU hold موجود را نشان میدهد:
جاوا
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. 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(); }
پایتون
# 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()