مدیریت حساب های کاربری

API دایرکتوری، متدهای برنامه‌نویسی برای ایجاد، به‌روزرسانی و حذف کاربران ارائه می‌دهد. همچنین می‌توانید اطلاعاتی در مورد کاربران منفرد یا فهرست کاربرانی که معیارهای مشخصی را برآورده می‌کنند، دریافت کنید. در ادامه نمونه‌هایی از برخی عملیات‌های اساسی کاربر آمده است.

ایجاد حساب کاربری

می‌توانید یک حساب کاربری به هر یک از دامنه‌های حساب Google Workspace خود اضافه کنید. قبل از افزودن حساب کاربری، مالکیت دامنه را تأیید کنید.

اگر حساب جیمیل شخصی خود را به یک حساب ایمیل تجاری با نام دامنه خودتان ارتقا داده‌اید، تا زمانی که تنظیمات اضافی Google Workspace را باز نکنید، نمی‌توانید حساب‌های کاربری جدید ایجاد کنید. برای جزئیات بیشتر، به حساب‌های ایمیل تجاری G Suite که به G Suite Basic به‌روزرسانی شده‌اند، مراجعه کنید.

برای ایجاد یک حساب کاربری با استفاده از یکی از دامنه‌های خود، از درخواست POST زیر استفاده کنید و مجوزدهی شرح داده شده در «درباره احراز هویت و مجوزدهی بیشتر بدانید» را نیز اضافه کنید. می‌توانید دامنه‌های موجود برای Directory API را در لیست دامنه‌های OAuth 2.0 مشاهده کنید. برای ویژگی‌های رشته پرس‌وجوی درخواست، به متد users.insert() مراجعه کنید.

POST https://admin.googleapis.com/admin/directory/v1/users

همه درخواست‌های ایجاد، شما را ملزم به ارسال اطلاعات مورد نیاز برای انجام درخواست می‌کنند. اگر از کتابخانه‌های کلاینت استفاده می‌کنید، آن‌ها اشیاء داده را از زبان انتخابی شما به اشیاء با فرمت داده JSON تبدیل می‌کنند.

درخواست JSON

JSON زیر نمونه‌ای از درخواست برای ایجاد یک کاربر را نشان می‌دهد. برای مشاهده لیست کامل ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

{
"primaryEmail": "liz@example.com",
"name": {
 "givenName": "Elizabeth",
 "familyName": "Smith"
},
"suspended": false,
"password": "new user password",
"hashFunction": "SHA-1",
"changePasswordAtNextLogin": false,
"ipWhitelisted": false,
"ims": [
 {
  "type": "work",
  "protocol": "gtalk",
  "im": "liz_im@talk.example.com",
  "primary": true
 }
],
"emails": [
 {
  "address": "liz@example.com",
  "type": "home",
  "customType": "",
  "primary": true
 }
],
"addresses": [
 {
  "type": "work",
  "customType": "",
  "streetAddress": "1600 Amphitheatre Parkway",
  "locality": "Mountain View",
  "region": "CA",
  "postalCode": "94043"
 }
],
"externalIds": [
 {
  "value": "12345",
  "type": "custom",
  "customType": "employee"
 }
],
"organizations": [
 {
  "name": "Google Inc.",
  "title": "SWE",
  "primary": true,
  "type": "work",
  "description": "Software engineer"
 }
],
"phones": [
 {
  "value": "+1 nnn nnn nnnn",
  "type": "work"
 }
],
"orgUnitPath": "/corp/engineering",
"includeInGlobalAddressList": true
}

اگر نرخ درخواست‌های ایجاد شما خیلی بالا باشد، ممکن است پاسخ‌های HTTP 503 از سرور API دریافت کنید که نشان می‌دهد سهمیه شما بیش از حد شده است. اگر این پاسخ‌ها را دریافت کردید، از یک الگوریتم بازگشت نمایی برای دوباره امتحان کردن درخواست‌های خود استفاده کنید.

نکاتی که در مورد حساب کاربری جدید باید به آنها توجه کنید عبارتند از:

  • اگر حساب گوگل مجوزهای ایمیل خریداری کرده باشد، به حساب کاربری جدید به طور خودکار یک صندوق پستی اختصاص داده می‌شود. تکمیل و فعال‌سازی این تخصیص ممکن است چند دقیقه طول بکشد.
  • ویرایش یک فیلد فقط خواندنی در یک درخواست، مانند isAdmin ، توسط سرویس API نادیده گرفته می‌شود.
  • حداکثر تعداد دامنه‌های مجاز در یک حساب کاربری ۶۰۰ است (۱ دامنه اصلی + ۵۹۹ دامنه اضافی)
  • اگر هنگام ایجاد حساب کاربری، کاربری به واحد سازمانی خاصی اختصاص داده نشده باشد، حساب در واحد سازمانی سطح بالا قرار دارد. واحد سازمانی یک کاربر تعیین می‌کند که کاربر به کدام سرویس‌های Google Workspace دسترسی دارد. اگر کاربر به یک سازمان جدید منتقل شود، دسترسی کاربر تغییر می‌کند. برای اطلاعات بیشتر در مورد ساختارهای سازمانی، به مرکز راهنمای مدیریت مراجعه کنید. برای اطلاعات بیشتر در مورد انتقال کاربر به سازمان دیگر، به به‌روزرسانی کاربر مراجعه کنید.
  • برای حساب‌های کاربری جدید، password لازم است. اگر تابع hashFunction مشخص شده باشد، رمز عبور باید یک کلید هش معتبر باشد. اگر مشخص نشده باشد، رمز عبور باید به صورت متن ساده و بین ۸ تا ۱۰۰ کاراکتر ASCII باشد. برای اطلاعات بیشتر، به مرجع API مراجعه کنید.
  • برای کاربرانی که از طرح انعطاف‌پذیر Google Workspace استفاده می‌کنند، ایجاد کاربران با استفاده از این API تأثیر مالی خواهد داشت و منجر به اعمال هزینه‌هایی به حساب صورتحساب مشتری شما خواهد شد. برای اطلاعات بیشتر، به اطلاعات صورتحساب API مراجعه کنید.
  • یک حساب Google Workspace می‌تواند شامل هر یک از دامنه‌های شما باشد. در یک حساب چند دامنه‌ای، کاربران در یک دامنه می‌توانند خدمات را با کاربران در دامنه‌های حساب دیگر به اشتراک بگذارند. برای اطلاعات بیشتر در مورد کاربران در چندین دامنه، به اطلاعات دامنه چندگانه API مراجعه کنید.
  • ممکن است حساب‌های کاربری متناقض وجود داشته باشند. بررسی کنید که آیا کسی که قصد اضافه کردن آن را دارید، از قبل حساب کاربری گوگل دارد یا خیر. سپس مراحلی را برای جلوگیری از تداخل با آن حساب‌ها دنبال کنید. به بخش «یافتن و حل اختلاف حساب‌های کاربری متناقض» مراجعه کنید.
  • ممکن است حساب‌های بازدیدکننده وجود داشته باشد. اگر کاربران، افرادی خارج از سازمان شما را که حساب گوگل ندارند، برای همکاری در Drive دعوت کنند، آنها حساب‌های بازدیدکننده را با فرمت visitor's_username@your_domain.com دریافت خواهند کرد. اگر کاربری با نام کاربری مشابه حساب بازدیدکننده اضافه کنید، آن حساب به یک حساب کامل Google Workspace تبدیل می‌شود. این حساب مجوزهای فایل Drive فعلی خود را حفظ خواهد کرد. به اشتراک‌گذاری اسناد با بازدیدکنندگان مراجعه کنید.

یک پاسخ موفق، کد وضعیت HTTP 200 را برمی‌گرداند. این پاسخ، همراه با کد وضعیت، ویژگی‌های حساب کاربری جدید را نیز برمی‌گرداند.

به‌روزرسانی حساب کاربری

برای به‌روزرسانی یک حساب کاربری، از درخواست PUT زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را نیز وارد کنید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربری منحصر به فرد یا یکی از آدرس‌های ایمیل مستعار کاربر باشد.

PUT https://admin.googleapis.com/admin/directory/v1/users/ userKey

بدنه درخواست و پاسخ هر دو حاوی نمونه‌ای از User هستند. با این حال، API دایرکتوری از patch semantics پشتیبانی می‌کند، بنابراین شما فقط باید فیلدهای به‌روزرسانی‌شده را در درخواست خود ارسال کنید.

درخواست نمونه

در مثال زیر، givenName کاربری هنگام ایجاد حساب کاربری «الیزابت» بوده و فقط یک آدرس ایمیل کاری ارائه شده است.

{
  "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith"
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    }
  ]
}

درخواست زیر، givenName از "Elizabeth" به "Liz" به‌روزرسانی می‌کند و همچنین یک آدرس ایمیل خانگی اضافه می‌کند. توجه داشته باشید که هر دو آدرس ایمیل به طور کامل ارائه شده‌اند زیرا فیلد یک آرایه است.

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

{
  "name": {
    "givenName": "Liz",
   },
  "emails": [
    {
      "address": "liz@example.com",
      "type": "work",
      "primary": true
    },
    {
      "address": "liz@home.com",
      "type": "home"
    }
  ]
}

یک پاسخ موفق، یک کد وضعیت HTTP 200 و یک منبع User با فیلدهای به‌روزرسانی‌شده را برمی‌گرداند.

هنگام به‌روزرسانی نام حساب کاربری، به موارد زیر توجه داشته باشید:

  • تغییر نام یک حساب کاربری، آدرس ایمیل اصلی کاربر و دامنه مورد استفاده هنگام بازیابی اطلاعات این کاربر را تغییر می‌دهد. قبل از تغییر نام کاربر، توصیه می‌کنیم که کاربر را از تمام جلسات مرورگر و سرویس‌ها خارج کنید.
  • فرآیند تغییر نام یک حساب کاربری می‌تواند تا 10 دقیقه طول بکشد تا در تمام سرویس‌ها منتشر شود.
  • هنگام تغییر نام کاربری، نام کاربری قدیمی به عنوان نام مستعار حفظ می‌شود تا در صورت تنظیمات ارسال ایمیل، تحویل مداوم ایمیل تضمین شود و به عنوان نام کاربری جدید در دسترس نخواهد بود.
  • به طور کلی، ما همچنین توصیه می‌کنیم از آدرس ایمیل کاربر به عنوان کلید برای داده‌های دائمی استفاده نکنید زیرا آدرس ایمیل ممکن است تغییر کند.
  • برای فهرست کاملی از تأثیرات تغییر نام کاربر در برنامه‌های Google Workspace، به مرکز راهنمای مدیریت مراجعه کنید.

یک کاربر را مدیر کنید

برای تبدیل کاربر به مدیر ارشد، از درخواست POST زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را نیز وارد کنید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربری منحصر به فرد یا یکی از آدرس‌های ایمیل مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید. برای اطلاعات بیشتر در مورد یک مدیر ارشد، به مرکز راهنمای مدیریت مراجعه کنید.

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/makeAdmin

درخواست JSON

در این مثال، کاربری که userKey او liz@example.com است، به یک مدیر ارشد تبدیل شده است:

POST https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/makeAdmin
{
 "status": true
}

یک پاسخ موفقیت‌آمیز ، کد وضعیت HTTP 200 را برمی‌گرداند.

مدیریت روابط کاربران

API دایرکتوری از فیلد relations برای تعریف انواع مختلف روابط بین کاربران استفاده می‌کند. در یک محیط تجاری، افراد معمولاً از این فیلد برای روابط مدیر-کارمند و دستیار استفاده می‌کنند، اما این فیلد از انواع بسیار دیگری نیز پشتیبانی می‌کند. این رابطه در کارت "افراد مرتبط" کاربر در هر برنامه Google Workspace که از این کارت پشتیبانی می‌کند، نمایش داده می‌شود. برای مثال‌هایی از محل قابل مشاهده بودن کارت، به افزودن اطلاعات به نمایه دایرکتوری کاربر مراجعه کنید.

ایجاد ارتباط بین کاربران

شما می‌توانید یک رابطه را فقط در یک جهت تعریف کنید، و از کاربر "مالک" شروع کنید، که رکورد او شامل فیلد relations است. type رابطه شخص دیگر با کاربر مالک را توصیف می‌کند. برای مثال، در یک رابطه مدیر-کارمند، کارمند کاربر مالک است و شما یک فیلد relations با نوع manager به حساب او اضافه می‌کنید. برای انواع مجاز، به مرجع شیء User مراجعه کنید.

با ایجاد یا به‌روزرسانی کاربر مالک با یک بدنه درخواست JSON که شامل فیلد relations است، رابطه را تنظیم کنید. می‌توانید چندین رابطه را در یک درخواست ایجاد کنید.

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_1",
      "type": "manager"
    },
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "dotted_line_manager"
    }
  ]
}

به‌روزرسانی یا حذف یک رابطه

شما فقط می‌توانید فیلد relations را به‌روزرسانی کنید، فقط می‌توانید آن را به‌طور کلی به‌روزرسانی کنید - نمی‌توانید افراد فهرست‌شده را به‌طور جداگانه برای تغییر نوع رابطه یا حذف آنها خطاب کنید. در مثال بالا، برای حذف رابطه مدیر موجود و تبدیل مدیر نقطه‌چین به مدیر کاربر مالک، حساب کاربر مالک را با تمام مقادیر فیلد مورد نظر خود به‌روزرسانی کنید.

{
  "relations": [
    {
      "value": "EMAIL_ADDRESS_RELATION_2",
      "type": "manager"
    }
  ]
}

برای حذف تمام روابط کاربر مالک، relations را خالی تنظیم کنید:

{
  "relations": []
}

بازیابی یک کاربر

برای بازیابی یک کاربر، از درخواست GET زیر استفاده کنید و مجوزی را که در بخش «درخواست‌های مجوز» توضیح داده شده است، وارد کنید. کلید userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربری منحصر به فرد یا یکی از آدرس‌های ایمیل مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

GET https://admin.googleapis.com/admin/directory/v1/users/userKey

این مثال، ویژگی‌های حساب کاربری را برای کاربری که آدرس ایمیل اصلی یا مستعار او liz@example.com است، برمی‌گرداند:

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

پاسخ JSON

یک پاسخ موفق، کد وضعیت HTTP 200 را برمی‌گرداند. این پاسخ، همراه با کد وضعیت، ویژگی‌های حساب کاربری را نیز برمی‌گرداند.

{
 "kind": "directory#user",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "name": {
  "givenName": "Liz",
  "familyName": "Smith",
  "fullName": "Liz Smith"
 },
 "isAdmin": true,
 "isDelegatedAdmin": false,
 "lastLoginTime": "2013-02-05T10:30:03.325Z",
 "creationTime": "2010-04-05T17:30:04.325Z",
 "agreedToTerms": true,
 "hashFunction": "SHA-1",
 "suspended": false,
 "changePasswordAtNextLogin": false,
 "ipWhitelisted": false,
 "ims": [
  {
   "type": "work",
   "protocol": "gtalk",
   "im": "lizim@talk.example.com",
   "primary": true
  }
 ],
 "emails": [
  {
   "address": "liz@example.com",
   "type": "home",
   "customType": "",
   "primary": true
  }
 ],
 "addresses": [
  {
   "type": "work",
   "customType": "",
   "streetAddress": "1600 Amphitheatre Parkway",
   "locality": "Mountain View",
   "region": "CA",
   "postalCode": "94043"
  }
 ],
 "externalIds": [
  {
   "value": "employee number",
   "type": "custom",
   "customType": "office"
  }
 ],
 "organizations": [
  {
   "name": "Google Inc.",
   "title": "SWE",
   "primary": true,
   "customType": "",
   "description": "Software engineer"
  }
 ],
 "phones": [
  {
   "value": "+1 nnn nnn nnnn",
   "type": "work"
  }
 ],
 "aliases": [
  "lizsmith@example.com",
  "lsmith@example.com"
 ],
 "nonEditableAliases": [
  "liz@test.com"
 ],
 "customerId": "C03az79cb",
 "orgUnitPath": "corp/engineering",
 "isMailboxSetup": true,
 "includeInGlobalAddressList": true
}

بازیابی تمام کاربران یک دامنه

برای بازیابی همه کاربران در یک دامنه، از درخواست GET زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را نیز لحاظ کنید. برای خوانایی بیشتر، این مثال از خروجی‌های خطی استفاده می‌کند:

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=email, givenName, or familyName:the query's value*

برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

پاسخ JSON

در این مثال، تمام کاربران در دامنه example.com با حداکثر ۲ دامنه کاربری در هر صفحه پاسخ بازگردانده می‌شوند. یک nextPageToken برای لیست بعدی کاربران در این پاسخ وجود دارد. به طور پیش‌فرض، سیستم لیستی از ۱۰۰ کاربر را به ترتیب حروف الفبا بر اساس آدرس ایمیل کاربر برمی‌گرداند:

GET https://admin.googleapis.com/admin/directory/v1/users?domain=example.com&maxResults=2

یک پاسخ موفق، کد وضعیت HTTP 200 را برمی‌گرداند. همراه با کد وضعیت، پاسخ، 2 حساب کاربری در دامنه example.com را برمی‌گرداند ( maxResults=2 ):

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "liz@example.com",
   "name": {
    "givenName": "Liz",
    "familyName": "Smith",
    "fullName": "Liz Smith"
   },
   "isAdmin": true,
   "isDelegatedAdmin": false,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "ims": [
    {
     "type": "work",
     "protocol": "gtalk",
     "im": "lizim@talk.example.com",
     "primary": true
    }
   ],
   "emails": [
    {
     "address": "liz@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "addresses": [
    {
     "type": "work",
     "customType": "",
     "streetAddress": "1600 Amphitheatre Parkway",
     "locality": "Mountain View",
     "region": "CA",
     "postalCode": "94043"
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "organizations": [
    {
     "name": "Google Inc.",
     "title": "SWE",
     "primary": true,
     "customType": "",
     "description": "Software engineer"
    }
   ],
   "phones": [
    {
     "value": "+1 nnn nnn nnnn",
     "type": "work"
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "user unique ID",
   "primaryEmail": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": true,
   "suspensionReason": "ADMIN",
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "contractor license number",
     "type": "custom",
     "customType": "work"
    }
   ],
   "aliases": [
    "second_admin@example.com"
   ],
   "nonEditableAliases": [
    "admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "corp/engineering",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "next page token"
}

بازیابی تمام کاربران حساب

برای بازیابی همه کاربران در یک حساب کاربری که می‌تواند شامل چندین دامنه باشد، از درخواست GET زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را نیز لحاظ کنید. برای خوانایی بیشتر، این مثال از خروجی‌های خطی استفاده می‌کند:

GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page
&orderBy=email, givenName, or familyName
&sortOrder=ascending or descending
&query=user attributes
  • رشته پرس و جوی customer ، مقدار my_customer یا customerId است.
  • از رشته my_customer برای نمایش customerId حساب خود استفاده کنید.
  • به عنوان مدیر نمایندگی فروش، از customerId مشتریِ دوباره فروخته شده استفاده کنید. برای customerId ، از نام دامنه اصلی حساب در درخواست « بازیابی همه کاربران در یک عملیات دامنه » استفاده کنید. پاسخ حاصل دارای مقدار customerId است.
  • رشته پرس‌وجوی اختیاری orderBy تعیین می‌کند که آیا لیست بر اساس آدرس ایمیل اصلی، نام خانوادگی یا نام کوچک کاربر مرتب شده است یا خیر. هنگام استفاده از orderBy ، می‌توانید از رشته پرس‌وجوی sortOrder نیز برای فهرست کردن نتایج به ترتیب صعودی یا نزولی استفاده کنید.
  • رشته query و جوی اختیاری، امکان جستجو در بسیاری از فیلدهای پروفایل کاربر، از جمله فیلدهای اصلی و سفارشی را فراهم می‌کند. برای مثال ، به جستجوی کاربران مراجعه کنید.

برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

در این مثال، یک مدیر حساب کاربری درخواست می‌کند که تمام کاربران موجود در حساب کاربری با یک ورودی کاربر در هر صفحه پاسخ بازگردانده شوند. nextPageToken به صفحه نتایج بعدی می‌رود:

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&maxResults=1

در این مثال، یک مدیر نمایندگی فروش از همه کاربران یک حساب کاربری که دوباره فروخته شده و مقدار customerId آن C03az79cb است، درخواست مجوز می‌کند.

GET https://admin.googleapis.com/admin/directory/v1/users?customer=C03az79cb&maxResults=1

پاسخ JSON

یک پاسخ موفق، کد وضعیت HTTP 200 را برمی‌گرداند. این پاسخ، همراه با کد وضعیت، نام تمام کاربران موجود در این حساب را نیز برمی‌گرداند:

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "admin2@example.com",
   "name": {
    "givenName": "admin",
    "familyName": "two",
    "fullName": "admin two"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "2013-02-05T10:30:03.325Z",
   "creationTime": "2010-04-05T17:30:04.325Z",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "admin2@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
     "second_admin@example.com"
   ],
   "nonEditableAliases": [
     "another_admin@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "liz@example.com",
   "name": {
    "givenName": "Elizabeth",
    "familyName": "Smith",
    "fullName": "Elizabeth Smith"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": false,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "liz@example.com",
     "type": "home",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "bank"
    }
   ],
   "relations": [
    {
     "value": "liz",
     "type": "friend",
     "customType": ""
    }
   ],
   "aliases": [
    "lizsmith@example.com",
    "lsmith@example.com"
   ],
   "nonEditableAliases": [
    "liz@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "test3@example.com",
   "name": {
    "givenName": "Tester",
    "familyName": "Three",
    "fullName": "Tester Three"
   },
   "isAdmin": false,
   "isDelegatedAdmin": false,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "test@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "tester3@example.com"
   ],
   "nonEditableAliases": [
    "third@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "username": "work_admin@example.com",
   "name": {
    "givenName": "Admin",
    "familyName": "Work",
    "fullName": "Admin Work"
   },
   "isAdmin": true,
   "isDelegatedAdmin": true,
   "lastLoginTime": "1336509883546",
   "creationTime": "1404802800000",
   "agreedToTerms": true,
   "hashFunction": "SHA-1",
   "suspended": false,
   "changePasswordAtNextLogin": false,
   "ipWhitelisted": false,
   "emails": [
    {
     "address": "work_admin@example.com",
     "type": "work",
     "customType": "",
     "primary": true
    }
   ],
   "externalIds": [
    {
     "value": "employee number",
     "type": "custom",
     "customType": "office"
    }
   ],
   "aliases": [
    "my_alias@example.com"
   ],
   "nonEditableAliases": [
    "other_alias@test.com"
   ],
   "customerId": "C03az79cb",
   "orgUnitPath": "/",
   "isMailboxSetup": true,
   "includeInGlobalAddressList": true
  }
 ],
 "nextPageToken": "NNNNN"
}

بازیابی کاربران اخیراً حذف شده

برای بازیابی تمام کاربرانی که در طول 20 روز گذشته از یک حساب یا از یکی از دامنه‌های آن حساب حذف شده‌اند، از درخواست‌های GET زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را وارد کنید. برای بازگرداندن یک کاربر، به بازگرداندن یک کاربر مراجعه کنید.

برای بازیابی کاربرانی که در طول 20 روز گذشته از دامنه اصلی یا زیر دامنه حساب حذف شده‌اند، از درخواست GET زیر استفاده کنید. رشته پرس و جوی domain ، نام دامنه اصلی دامنه است. برای ویژگی‌های درخواست و پاسخ کاربر، به مرجع API مراجعه کنید. و برای خوانایی، این مثال از خروجی‌های خط استفاده می‌کند:

GET https://admin.googleapis.com/admin/directory/v1/users
?domain=primary domain name&pageToken=token for next results page
&maxResults=max number of results per page
&showDeleted=true
اگر یک حساب کاربری چندین دامنه دارد، می‌توانید کاربرانی را که در طول 20 روز گذشته از کل حساب حذف شده‌اند، با استفاده از درخواست GET زیر بازیابی کنید. برای خوانایی بیشتر، این مثال از خروجی‌های خطی استفاده می‌کند:
GET https://admin.googleapis.com/admin/directory/v1/users
?customer=my_customer or customerId&pageToken=token for next results page
&maxResults=max number of results per page&showDeleted=true
  • رشته پرس و جوی customer ، مقدار my_customer یا customerId است.
  • به عنوان مدیر حساب، از رشته my_customer برای نمایش customerId حساب خود استفاده کنید.
  • به عنوان مدیر نمایندگی فروش، از customerId مشتریِ دوباره فروخته شده استفاده کنید. برای customerId ، از نام دامنه اصلی حساب در درخواست « بازیابی همه کاربران در یک عملیات دامنه » استفاده کنید. پاسخ حاصل دارای مقدار customerId است.

برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

در این مثال، یک مدیر حساب کاربری درخواست حذف همه کاربران حساب کاربری را دارد:

GET https://admin.googleapis.com/admin/directory/v1/users?customer=my_customer&showDeleted=true

پاسخ JSON

یک پاسخ موفقیت‌آمیز، کد وضعیت HTTP 200 را برمی‌گرداند. همراه با کد وضعیت، پاسخ، تمام کاربران حساب حذف شده در 20 روز گذشته را برمی‌گرداند:

{
 "kind": "directory#users",
 "users": [
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user1@example.com"
  },
  {
   "kind": "directory#user",
   "id": "the unique user id",
   "primaryEmail": "user3@example.com"
  }
 ],
 "nextPageToken": "token for next page of deleted users"
}

بازیابی عکس کاربر

این API یک تصویر کوچک از یک عکس، آخرین عکس پروفایل گوگل، را بازیابی می‌کند. برای بازیابی آخرین عکس کاربر، از درخواست GET زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را وارد کنید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربر یا هر یک از ایمیل‌های مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

GET https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

در این مثال، آخرین عکس liz@example.com برگردانده می‌شود:

GET https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail

پاسخ JSON

یک پاسخ موفقیت‌آمیز ، کد وضعیت HTTP 200 را برمی‌گرداند.

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

کدگذاری ایمن وب base64 API برای عکس‌های شما مشابه RFC 4648 'base64url' است. این به این معنی است:

  • کاراکتر اسلش (/) با کاراکتر زیرخط (_) جایگزین می‌شود.
  • علامت جمع (+) با علامت خط تیره (-) جایگزین می‌شود.
  • علامت مساوی (=) با ستاره (*) جایگزین می‌شود.
  • برای فاصله‌گذاری، به جای تعریف baseURL در RFC-4648 که از علامت مساوی (=) برای فاصله‌گذاری استفاده می‌کند، از کاراکتر نقطه (.) استفاده می‌شود. این کار برای ساده‌سازی تجزیه URL انجام می‌شود.
  • صرف نظر از اندازه عکسی که آپلود می‌شود، API آن را به طور متناسب به ۹۶x۹۶ پیکسل کاهش می‌دهد.

اگر نیاز به ایجاد لینک‌های سازگار با جاوا اسکریپت دارید، کتابخانه‌ی کلوژر گوگل شامل توابع رمزگذاری و رمزگشایی Base64 است که تحت مجوز آپاچی منتشر شده‌اند.

بازیابی کاربر به عنوان غیر مدیر

در حالی که حساب‌های کاربری فقط توسط مدیران قابل تغییر هستند، هر کاربری در دامنه می‌تواند پروفایل‌های کاربر را بخواند. یک کاربر غیر مدیر می‌تواند درخواست users.get یا users.list را با پارامتر viewType برابر با domain_public ارسال کند تا پروفایل عمومی کاربر را بازیابی کند. دامنه https://www.googleapis.com/auth/admin.directory.user.readonly برای این مورد استفاده ایده‌آل است.

نمای domain_public به یک کاربر غیر مدیر اجازه می‌دهد تا به مجموعه‌ای استاندارد از فیلدهای اصلی دسترسی داشته باشد. برای یک فیلد سفارشی، می‌توانید هنگام تعریف طرحواره، عمومی یا خصوصی بودن آن را انتخاب کنید.

به‌روزرسانی عکس کاربر

برای به‌روزرسانی عکس کاربر، از درخواست PUT زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را نیز وارد کنید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربر یا هر یک از ایمیل‌های مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

PUT https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

در این مثال، عکس liz@example.com به‌روزرسانی شده است:

PUT https://admin.googleapis.com/admin/directory/v1/users/liz@example.com/photos/thumbnail
{
"photoData": "web safe base64 encoded photo data"
}

هنگام به‌روزرسانی یک عکس، height و width توسط API نادیده گرفته می‌شوند.

پاسخ JSON

یک پاسخ موفقیت‌آمیز ، کد وضعیت HTTP 200 را برمی‌گرداند.

{
 "kind": "directory#user#photo",
 "id": "the unique user id",
 "primaryEmail": "liz@example.com",
 "mimeType": "the photo mime type",
 "height": "the photo height in pixels",
 "width": "the photo width in pixels",
 "photoData": "web safe base64 encoded photo data"
}

حذف عکس کاربر

برای حذف عکس کاربر، از درخواست DELETE زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های Authorize را نیز اضافه کنید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربر یا هر یک از ایمیل‌های مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey/photos/thumbnail

پس از حذف، عکس کاربر نمایش داده نمی‌شود. هر جا که عکس کاربر مورد نیاز باشد، به جای آن یک نیمرخ نمایش داده می‌شود.

حذف یک حساب کاربری

برای حذف یک حساب کاربری، از درخواست DELETE زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های Authorize را نیز در آن بگنجانید. userKey می‌تواند آدرس ایمیل اصلی کاربر، id کاربری منحصر به فرد یا یکی از آدرس‌های ایمیل مستعار کاربر باشد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

DELETE https://admin.googleapis.com/admin/directory/v1/users/userKey

در این مثال، حساب کاربری liz@example.com حذف شده است:

DELETE https://admin.googleapis.com/admin/directory/v1/users/liz@example.com

یک پاسخ موفق فقط کد وضعیت HTTP 200 را برمی‌گرداند.

نکات مهمی که قبل از حذف کاربر باید در نظر بگیرید:

  • کاربر حذف شده دیگر قادر به ورود به سیستم نخواهد بود.
  • برای اطلاعات بیشتر در مورد حذف حساب کاربری، لطفاً به مرکز راهنمای مدیریت مراجعه کنید.

لغو حذف یک حساب کاربری

کاربری که در ۲۰ روز گذشته حذف شده است، باید شرایط خاصی را داشته باشد تا حساب کاربری‌اش قابل بازیابی باشد .

برای بازیابی یک حساب کاربری، از درخواست POST زیر استفاده کنید و مجوز شرح داده شده در درخواست‌های مجوز را وارد کنید. userKey id کاربری منحصر به فردی است که در پاسخ عملیات بازیابی کاربران حذف شده در 20 روز گذشته یافت می‌شود. آدرس ایمیل اصلی کاربر یا یکی از آدرس‌های ایمیل مستعار کاربر را نمی‌توان در userKey برای این عملیات استفاده کرد. برای ویژگی‌های درخواست و پاسخ، به مرجع API مراجعه کنید.

POST https://admin.googleapis.com/admin/directory/v1/users/userKey/undelete

در این مثال، کاربر liz@example.com، بازیابی می‌شود. تمام ویژگی‌های حساب قبلی این کاربر بازیابی می‌شوند:

POST https://admin.googleapis.com/admin/directory/v1/users/12309329403209438205/undelete

یک پاسخ موفق فقط کد وضعیت HTTP 204 را برمی‌گرداند. برای مشاهده حساب کاربری حذف نشده، از عملیات بازیابی کاربر استفاده کنید.