ユーザー アカウントの管理

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 は、ユーザーを作成するリクエストの例を示しています。リクエストとレスポンスのプロパティの完全なリストについては、 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 サーバーから届くことがあります。このレスポンスを受け取った場合は、 指数バックオフ アルゴリズムを使用して リクエストを再試行します。

新しいアカウントを作成するときは、次の点に注意してください。

  • Google アカウントでメール ライセンスを購入している場合は、新しいユーザー アカウントにメールボックスが自動的に割り当てられます。この割り当てが完了して有効になるまで数分かかることがあります。
  • リクエスト内の読み取り専用フィールド(isAdmin など)の編集は、API サービスによって暗黙のうちに無視されます。
  • 1 つのアカウントで許可されるドメインの最大数は 600 です(プライマリ ドメイン 1 個 + 追加ドメイン 599 個)。
  • ユーザー アカウントの作成時に特定の組織部門に割り当てられていない場合、そのアカウントは最上位の組織部門に属します。 ユーザーの組織部門によって、ユーザーがアクセスできる Google Workspace サービスが決まります。ユーザーが新しい組織に移動すると、ユーザーのアクセス権が変更されます。組織構造について詳しくは、 管理者向けヘルプセンターをご覧ください。ユーザーを別の組織に移動する方法について詳しくは、 ユーザーの更新をご覧ください。
  • 新しいユーザー アカウントには password が必要です。hashFunction を指定する場合、パスワードは有効なハッシュキーでなければなりません。指定しない場合、パスワードはクリアテキストで、8 ~ 100 文字の ASCII 文字にする必要があります。詳しくは、 API リファレンスをご覧ください。
  • Google Workspace のフレキシブル プランのユーザーである場合、この API を使用して作成すると金銭的な影響が生じ、顧客の請求先アカウントに請求されます。詳細については、 API のお支払い情報をご覧ください。
  • Google Workspace アカウントには、どのドメインでも含めることができます。複数のドメイン アカウントの場合、1 つのドメインのユーザーは他のアカウント ドメインのユーザーとサービスを共有できます。複数のドメインのユーザーについて詳しくは、 API の複数ドメイン情報をご覧ください。
  • 競合するアカウントが存在する可能性があります。追加する予定のユーザーがすでに Google アカウントを持っていないかどうかを確認してください。その後、既存アカウントとの競合を回避する操作を行います。競合するアカウントを特定して競合を解決する方法をご覧ください。
  • ビジター アカウントがある可能性があります。Google アカウントを持っていない組織外のユーザーをドライブに招待すると、ビジターにはビジター アカウントが 付与されます。形式は visitor's_username@your_domain.comです。ビジター アカウントと同じユーザー名でユーザーを追加した場合、そのアカウントは完全な Google Workspace アカウントに変換されます。アカウントのドライブ ファイルに対する現在の権限は維持されます。詳しくは、 ドキュメントをビジターと共有するをご覧ください。

成功すると、レスポンスとして HTTP 200 のステータス コードが返されます。レスポンスでは、ステータス コードとともに新しいユーザー アカウントのプロパティが返されます。

ユーザー アカウントを更新する

ユーザー アカウントを更新するには、次の PUT リクエストを使用し、 リクエストの承認で説明されている 承認を含めます。userKey には、ユーザーのメインのメールアドレス、一意のユーザー id、ユーザーのエイリアス メールアドレスのいずれかを指定できます。

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

リクエストとレスポンスの本文には、 User のインスタンスが含まれます。ただし、 Directory API は パッチのセマンティクスをサポートしているため、リクエストで更新されたフィールドのみを送信する必要があります。

リクエストの例

以下の例では、ユーザー アカウントが作成されたときのユーザーの givenName は「Elizabeth」で、仕事用のメールアドレスのみが指定されています。

{
  "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 ではユーザーのメールアドレスを永続データのキーとして使用しないこともおすすめします。
  • Google Workspace アプリ全体でユーザー名を変更した場合の影響の一覧については、 管理者向けヘルプセンターをご覧ください。

ユーザーを管理者にする

ユーザーを特権管理者にするには、次の POST リクエストを使用し、 その際にはリクエストを承認するで説明されている 承認を含めますuserKey には、ユーザーのメインのメールアドレス、一意のユーザー id、ユーザーのエイリアス メールアドレスのいずれかを指定できます。リクエストとレスポンスのプロパティについては、 API リファレンスをご覧ください。 特権管理者について詳しくは、 管理者向けヘルプセンターをご覧ください。

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

ユーザーは、特権管理者になる前に存在している必要があります。この操作はアカウントの特権管理者のみが行えます。委任管理者がユーザーを管理者ロールに昇格することはできません。Google 管理コンソールを使用して管理者のロールを変更する方法については、 管理者向けヘルプセンターをご覧ください。

JSON リクエスト

この例では、userKeyliz@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 は、所有ユーザーに対する他のユーザーの関係を表します。たとえば、マネージャーと従業員の関係では、従業員が所有ユーザーであり、manager タイプの relations フィールドをアカウントに追加します。使用できるタイプについては、 User オブジェクトのリファレンスをご覧ください。

`relations` フィールドを含む JSON リクエスト本文を使用して、所有ユーザーを 作成 または 更新 することで、関係を設定します。 1 つのリクエストで複数の関係を作成できます。

{
  "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 リクエストを使用し、 その際にはリクエストを承認するで説明されている承認を含めます Authorize requests。この例では、読みやすくするために改行を使用しています。

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 ドメインのすべてのユーザーが、レスポンス ページごとに最大 2 つのユーザー ドメインで返されます。このレスポンスには、後続のユーザーリストの nextPageToken があります。デフォルトでは、100 人のユーザーのリストがメールアドレスのアルファベット順で返されます。

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

成功すると、レスポンスとして HTTP 200 のステータス コードが返されます。レスポンスでは、ステータス コードとともに、example.com ドメインの 2 つのユーザー アカウントが返されます(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",
   "suspensionTime": "2013-02-05T10:30:03.325Z",
   "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_customercustomerId を使ってアカウントの customerId を表します。
  • 販売パートナー管理者の場合は、販売パートナー経由で購入されたお客様の customerId を使用します。 customerId には、アカウントのプライマリ ドメイン名を ドメイン内のすべてのユーザーを取得するの操作のリクエストで使用します。 結果のレスポンスに customerId 値が入っています。
  • オプションの orderBy クエリ文字列では、リストをユーザーのメインのメールアドレス、ファミリー名、または指定された名前で並べ替えるかどうかを指定します。orderBy を使用するときに sortOrder クエリ文字列を使用して、結果を昇順または降順で並べ替えることもできます。
  • オプションの query クエリ文字列を使用すると、ユーザー プロフィール内の多くのフィールド(コアフィールドとカスタム フィールドを含む)を検索できます。例については、 ユーザーを検索するをご覧ください。

リクエストとレスポンスのプロパティについては、 API リファレンスをご覧ください。

以下の例では、アカウント管理者は、アカウント内のすべてのユーザーを、レスポンス ページごとに 1 つのユーザー エントリで返すようにリクエストしています。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 によって、写真のサムネイル(最新の Google プロフィール写真)が 1 つ取得されます。ユーザーの最新の写真を取得するには、次の 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"
}

この API におけるウェブセーフな base64 エンコードの写真は、 RFC 4648 の「base64url」に類似したものです。 具体的には、次のようになります。

  • スラッシュ(/)はアンダースコア(_)に置き換えられます。
  • プラス(+)はハイフン(-)に置き換えられます。
  • 等号(=)はアスタリスク(*)に置き換えられます。
  • パディングについては、パディングに等号(=)を使用する RFC-4648 の baseURL の定義の代わりに、ピリオド(.)が使用されます。これは、URL の解析をシンプルにするために行われます。
  • アップロードされる写真のサイズにかかわらず、API は写真のサイズを 96x96 ピクセルにアスペクト比を固定して縮小します。

JavaScript から互換性のあるリンクを作成する必要がある場合、 Google Closure Library に、 Apache ライセンスでリリースされている 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"
}

写真を更新するとき、この API では heightwidth が無視されます。

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、ユーザーのエイリアス メールアドレスのいずれかを使用できます。リクエストとレスポンスのプロパティについては、 API リファレンスをご覧ください。

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

削除すると、ユーザーの写真が表示されなくなります。ユーザーの写真が必要になる場合には、代わりにシルエットが表示されます。

ユーザー アカウントを削除する

ユーザー アカウントを削除するには、次の DELETE リクエストを使用し、 リクエストの承認で説明されている 承認を含めます。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 のステータス コードが返されます。

ユーザーを削除する前に、次の点を考慮してください。

  • 削除されたユーザーはログインできなくなります。
  • ユーザー アカウントの削除について詳しくは、 管理者向けヘルプセンターをご覧ください。

ユーザー アカウントの削除を取り消す

削除を取り消すユーザーは、過去 20 日以内に削除されたユーザーであり、ユーザーのアカウントを復元するための条件を満たしている必要があります。

ユーザー アカウントの削除を取り消すには、次の POST リクエストを使用し、その際には リクエストを承認するで説明されている 承認を含めますuserKey は、過去 20 日間に削除されたユーザーを取得するの操作に対するレスポンスに入っている一意のユーザー id です。 この操作の 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 のステータス コードが返されます。復元された ユーザーのアカウントを確認するには、ユーザーを取得するの操作を使用します。