برای انجام تعهدات قانونی یا حفظ، داده ها را به طور نامحدود حفظ می کند. معمولاً روی یک یا چند کاربر نگهداری میشود تا اطمینان حاصل شود که دادههای بالقوه مربوط به یک موضوع را نمیتوان حذف کرد تا زمانی که آن موضوع دیگر فعال نباشد.
اگر کاربری که تحت تعلیق است، داده های نگهداری شده را حذف کند، آن داده از دید کاربر حذف می شود، اما در Vault حفظ می شود. تا زمانی که نگهداری در جای خود باشد، یک سرپرست Vault میتواند آن دادهها را جستجو و صادر کند.
هولدها دارای اجزای زیر هستند:
- یک سرویس - برنامه ای که مسئول داده هایی است که باید نگهداری شوند. این سرویس را می توان روی پست، Drive یا Groups تنظیم کرد.
- یک محدوده - نهادهای تحت پوشش نگهدارنده. دامنه را می توان روی یک یا چند حساب کاربری یا یک واحد سازمانی (OU) تنظیم کرد.
- گزینههای اضافی (اختیاری) - جزئیات خاص (پرسمانهای جستجو یا گزینههای پیکربندی) که برای محدود کردن دادههایی که باید در محدوده تعریفشده نگهداری شوند استفاده میشوند. گزینه ها عبارتند از:
- نامه، گروه ها: عبارت جستجو برای محدود کردن زمان نگه داشتن
- Drive: درایوهای مشترک را در حالت نگهدارنده قرار دهید
برای کار با منابع Vault، حساب باید دارای امتیازات Vault مورد نیاز و دسترسی به موضوع باشد. برای دسترسی به یک موضوع، حساب باید موضوع را ایجاد کرده باشد، موضوع را با آنها به اشتراک گذاشته باشد، یا دارای امتیاز View All Matters باشد.
با یک عبارت جستجو برای نامههای حسابهای کاربری خاص یک نگهدارنده ایجاد کنید
مثال زیر نشان می دهد که چگونه یک هولد با نام "My First mail Accounts Hold" برای ایجاد شده است:
- خدمات: پستی
- نهاد: حساب های کاربری "user1" و "user2"
- گزینه های اضافی: عبارت جستجوی "to:[email protected]"
شناسههای حساب کاربری را از AdminSdk بازیابی کنید. توجه داشته باشید که HeldAccount میتواند شناسه یا ایمیل حساب را دریافت کند. اگر هر دو داده شوند، از ایمیل استفاده می شود و شناسه حساب نادیده گرفته می شود.
جاوا
HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:[email protected]"); 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:[email protected]'} 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 ایجاد می شود:
- خدمات: رانندگی
- نهاد: واحد سازمانی "Finance" (شناسه OU در orgUnitId ثبت شده است)
- گزینه های اضافی: شامل درایوهای مشترکی است که کاربران در این واحد سازمانی عضو آن هستند
شناسه های OU را از AdminSdk بازیابی کنید.
جاوا
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()
برای گروهها در حسابهای گروهی خاص با بازه تاریخ، نگهداری ایجاد کنید
مثال زیر نشان می دهد که چگونه یک Hold با نام "My First Group Hold" برای:
- خدمات: گروه ها
- نهاد: گروه حساب های "group1" و "group2"
- گزینههای اضافی: فقط پیامهایی را با تاریخ ارسال بین «startTime» و «endTime» نگه دارید
شناسههای حساب گروهی را از AdminSdk بازیابی کنید.
جاوا
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 protected]"; // 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 = 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()