إدارة حسابات المستخدمين

توفّر Directory API طرقًا آلية لإنشاء المستخدمين وتعديلهم وحذفهم. يمكنك أيضًا الحصول على معلومات حول مستخدمين فرديين أو قوائم بالمستخدمين الذين يستوفون معايير محدّدة. في ما يلي أمثلة على بعض عمليات المستخدم الأساسية.

إنشاء حساب مستخدم

يمكنك إضافة حساب مستخدم إلى أي من نطاقات حسابك على Google Workspace. قبل إضافة حساب مستخدم، عليك تأكيد ملكية النطاق.

إذا تمت ترقية حساب Gmail شخصي إلى حساب بريد إلكتروني خاص بالنشاط التجاري باستخدام اسم النطاق الخاص بك، لن تتمكّن من إنشاء حسابات مستخدمين جديدة إلى أن تفتح إعدادات إضافية في Google Workspace. لمزيد من التفاصيل، يُرجى الاطّلاع على تعديل حسابات البريد الإلكتروني للأنشطة التجارية في Google Workspace.

لإنشاء حساب مستخدم باستخدام أحد نطاقاتك، استخدِم طلب POST التالي وأضِف التفويض الموضّح في التعرّف على المصادقة والتفويض. يمكنك الاطّلاع على النطاقات المتاحة لواجهة Directory API في قائمة نطاقات OAuth 2.0. للاطّلاع على سمات سلسلة طلب البحث، يُرجى مراجعة طريقة users.insert.

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

تتطلّب جميع طلبات الإنشاء إرسال المعلومات اللازمة لتنفيذ الطلب. في حال استخدام مكتبات برامج، ستحوّل هذه المكتبات عناصر البيانات من لغتك المحدّدة إلى عناصر منسَّقة بتنسيق JSON.

طلب JSON

يعرض ملف JSON التالي نموذج طلب لإنشاء مستخدم. للاطّلاع على القائمة الكاملة بسمات الطلب والاستجابة، يُرجى الرجوع إلى مرجع واجهة برمجة التطبيقات.

{
"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 من خادم واجهة برمجة التطبيقات تشير إلى أنّك تجاوزت الحصة المسموح بها. في حال تلقّي هذه الردود، استخدِم خوارزمية التراجع الأسي لإعادة محاولة إرسال طلباتك.

عند إنشاء حساب جديد، يُرجى مراعاة ما يلي:

  • إذا كان حساب Google قد اشترى تراخيص بريد، سيتم تلقائيًا منح حساب المستخدم الجديد صندوق بريد. قد يستغرق إكمال عملية الربط وتفعيلها بضع دقائق.
  • يتجاهل خادم واجهة برمجة التطبيقات بشكل غير معلن أي تعديل على حقل للقراءة فقط في الطلب، مثل isAdmin.
  • الحدّ الأقصى لعدد النطاقات المسموح بها في الحساب هو 600 نطاق (نطاق أساسي واحد + 599 نطاقًا إضافيًا).
  • إذا لم يتم تعيين مستخدم إلى وحدة تنظيمية معيّنة عند إنشاء حساب المستخدم، يكون الحساب في الوحدة التنظيمية ذات المستوى الأعلى. تحدِّد الوحدة التنظيمية للمستخدم خدمات Google Workspace التي يمكن للمستخدم الوصول إليها. في حال نقل المستخدم إلى مؤسسة جديدة، تتغيّر أذونات الوصول الخاصة به. لمزيد من المعلومات حول بنى المؤسسات، يُرجى الاطّلاع على مركز مساعدة المشرفين. لمزيد من المعلومات حول نقل مستخدم إلى مؤسسة مختلفة، يُرجى الاطّلاع على تعديل مستخدم.
  • يجب توفير password لحسابات المستخدمين الجدد. إذا تم تحديد hashFunction، يجب أن تكون كلمة المرور مفتاح تجزئة صالحًا. في حال عدم تحديدها، يجب أن تكون كلمة المرور نصًا عاديًا وأن تتراوح بين 8 و100 حرف ASCII. للمزيد من المعلومات، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.
  • بالنسبة إلى المستخدمين الذين لديهم خطة مرنة في Google Workspace، سيؤدي إنشاء مستخدمين باستخدام واجهة برمجة التطبيقات هذه إلى تأثير مالي وسيؤدي إلى فرض رسوم على حساب الفوترة الخاص بالعميل. لمزيد من المعلومات، يُرجى الاطّلاع على معلومات فوترة واجهة برمجة التطبيقات.
  • يمكن أن يتضمّن حساب Google Workspace أيًا من نطاقاتك. في حساب يتضمّن عدة نطاقات، يمكن للمستخدمين في أحد النطاقات مشاركة الخدمات مع المستخدمين في نطاقات الحساب الأخرى. لمزيد من المعلومات حول المستخدمين في نطاقات متعددة، يُرجى الاطّلاع على معلومات النطاقات المتعددة في واجهة برمجة التطبيقات.
  • قد تكون هناك حسابات متضاربة. تحقَّق مما إذا كان أي شخص تخطط لإضافته لديه حساب Google أم لا. بعد ذلك، اتّبِع الخطوات لتجنُّب التعارض مع هذه الحسابات. راجِع مقالة العثور على الحسابات المتضاربة وحلّها.
  • قد تكون هناك حسابات زوّار. إذا دعا المستخدمون أشخاصًا خارج مؤسستك لا يملكون حسابات Google للتعاون في 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. ومع ذلك، تتيح Directory API دلالات التصحيح، لذا ما عليك سوى إرسال الحقول المعدَّلة في طلبك.

مثال على الطلب

في المثال أدناه، كان givenName الخاص بالمستخدم هو "إليزابيث" عند إنشاء حساب المستخدم، وتم تقديم عنوان بريد إلكتروني خاص بالعمل فقط.

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

يعدّل الطلب التالي اسم givenName من "إليزابيث" إلى "ليز"، ويضيف أيضًا عنوان بريد إلكتروني منزلي. يُرجى العِلم أنّه يتم تقديم كلا عنوانَي البريد الإلكتروني بشكل كامل لأنّ الحقل عبارة عن مصفوفة.

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 الفريد للمستخدم أو أحد عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، راجِع مرجع واجهة برمجة التطبيقات. لمزيد من المعلومات حول المشرف المتميّز، يُرجى الاطّلاع على مركز مساعدة المشرفين.

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

يجب أن يكون المستخدم موجودًا أولاً قبل منحه دور المشرف المتميّز. لا يمكن إجراء هذه العملية إلا من خلال المشرف المتميّز للحساب، ولا يمكن للمشرفين المفوضين ترقية المستخدمين إلى أدوار إدارية. للحصول على معلومات حول استخدام "وحدة تحكّم المشرف في Google" لتغيير دور المشرف، يُرجى الاطّلاع على مركز مساعدة المشرفين.

طلب JSON

في هذا المثال، أصبح المستخدم الذي يحمل userKey بالقيمة liz@example.com مشرفًا متميّزًا:

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

تعرض الاستجابة الناجحة رمز الحالة HTTP 200.

إدارة علاقات المستخدمين

تستخدم Directory 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 الفريد للمستخدم أو أحد عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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*

للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

استجابة JSON

في هذا المثال، يتم عرض جميع المستخدمين في النطاق example.com مع حد أقصى يبلغ نطاقَي مستخدمَين لكل صفحة رد. هناك nextPageToken لقائمة المستخدمين التالية في هذه الاستجابة. يعرض النظام تلقائيًا قائمة تضم 100 مستخدم مرتّبين أبجديًا حسب عنوان البريد الإلكتروني للمستخدم:

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

تعرض الاستجابة الناجحة رمز الحالة HTTP 200. بالإضافة إلى رمز الحالة، يعرض الردّ حسابَي مستخدمَين في النطاق 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 بالبحث في العديد من الحقول في الملف الشخصي للمستخدم، بما في ذلك الحقول الأساسية والمخصّصة. راجِع مقالة البحث عن المستخدمين للاطّلاع على أمثلة.

للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

في هذا المثال، يطلب مشرف حساب عرض جميع المستخدمين في الحساب مع إدخال مستخدم واحد في كل صفحة رد. ينتقل 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 سلسلة طلب البحث هي اسم النطاق الأساسي. للاطّلاع على سمات طلبات المستخدمين والاستجابات، يُرجى مراجعة مرجع واجهة برمجة التطبيقات. ولسهولة القراءة، يستخدم هذا المثال أحرف الرجوع إلى أول السطر:

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.

للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

في هذا المثال، يطلب مشرف حساب جميع المستخدمين المحذوفين في الحساب:

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"
}

استرداد صورة مستخدم

تستردّ واجهة برمجة التطبيقات صورة مصغّرة واحدة، وهي أحدث صورة ملف شخصي على Google. لاسترداد أحدث صورة للمستخدم، استخدِم طلب GET التالي وأضِف التفويض الموضّح في تفويض الطلبات. يمكن أن يكون userKey هو عنوان البريد الإلكتروني الرئيسي للمستخدم أو اسم المستخدم id أو أي من عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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 الآمن على الويب الذي تستخدمه واجهة برمجة التطبيقات لصورك RFC 4648 'base64url'. وهذا يعني ما يلي:

  • يتم استبدال الشرطة المائلة (/) بالشرطة السفلية (_).
  • يتم استبدال علامة الجمع (+) بعلامة الطرح (-).
  • يتم استبدال علامة المساواة (=) بعلامة النجمة (*).
  • بالنسبة إلى المساحة المتروكة، يتم استخدام النقطة (.) بدلاً من تعريف RFC-4648 baseURL الذي يستخدم علامة المساواة (=) للمساحة المتروكة. ويتم ذلك لتبسيط عملية تحليل عناوين URL.
  • بغض النظر عن حجم الصورة التي يتم تحميلها، تقلّل واجهة برمجة التطبيقات حجمها بشكل متناسب إلى 96x96 بكسل.

إذا كنت بحاجة إلى إنشاء روابط متوافقة من JavaScript، تتضمّن مكتبة Google Closure وظائف ترميز وفك ترميز Base64 التي يتم إصدارها بموجب ترخيص Apache.

استرداد مستخدم كغير مشرف

مع أنّ المشرفين فقط يمكنهم تعديل حسابات المستخدمين، يمكن لأي مستخدم على النطاق قراءة الملفات الشخصية للمستخدمين. يمكن للمستخدم غير المشرف تقديم طلب users.get أو users.list مع ضبط المَعلمة viewType على domain_public لاسترداد الملف الشخصي العام للمستخدم. يُعد النطاق https://www.googleapis.com/auth/admin.directory.user.readonly مثاليًا لحالة الاستخدام هذه.

تسمح طريقة العرض domain_public لمستخدم غير مشرف بالوصول إلى مجموعة عادية من الحقول الأساسية. بالنسبة إلى الحقل المخصّص، يمكنك اختيار ما إذا كان يجب أن يكون عامًا أو خاصًا عند تحديد المخطّط.

تعديل صورة مستخدم

لتعديل صورة مستخدم، استخدِم طلب PUT التالي وأضِف التفويض الموضّح في طلبات التفويض. يمكن أن يكون userKey هو عنوان البريد الإلكتروني الأساسي للمستخدم أو id أو أي من عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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.

استجابة 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 التالي وأدرِج التفويض الموضّح في طلبات التفويض. يمكن أن يكون userKey هو عنوان البريد الإلكتروني الأساسي للمستخدم أو id أو أي من عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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

بعد حذف صورة المستخدم، لن تظهر. في أي مكان يُطلب فيه صورة المستخدم، سيتم عرض صورة ظلية بدلاً منها.

حذف حساب مستخدم

لحذف حساب مستخدم، استخدِم طلب DELETE التالي وأضِف التفويض الموضّح في طلبات التفويض. يمكن أن يكون userKey عنوان البريد الإلكتروني الرئيسي للمستخدم أو id الفريد للمستخدم أو أحد عناوين البريد الإلكتروني البديلة للمستخدم. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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.

قبل حذف مستخدم، يجب مراعاة ما يلي:

  • لن يتمكّن المستخدم المحذوف من تسجيل الدخول بعد الآن.
  • لمزيد من المعلومات حول حذف حسابات المستخدمين، يُرجى الرجوع إلى مركز مساعدة المشرفين.

إلغاء حذف حساب مستخدم

يجب أن يستوفي المستخدم الذي تم حذفه في آخر 20 يومًا شروطًا معيّنة قبل أن يتم استعادة حسابه.

لاستعادة حساب مستخدم تم حذفه، استخدِم طلب POST التالي وأضِف التفويض الموضّح في طلبات التفويض. userKey هو معرّف المستخدم الفريد id الذي تم العثور عليه في ردّ عملية استرداد المستخدمين المحذوفين خلال آخر 20 يومًا. لا يمكن استخدام عنوان البريد الإلكتروني الرئيسي للمستخدم أو أحد عناوين البريد الإلكتروني البديلة للمستخدم في userKey لهذه العملية. للاطّلاع على سمات الطلب والاستجابة، يُرجى مراجعة مرجع واجهة برمجة التطبيقات.

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. للاطّلاع على حساب المستخدم الذي تم إلغاء حذفه، استخدِم عملية استرداد مستخدم.