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 リクエスト
この例では、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 は、所有ユーザーと他のユーザーの関係を表します。たとえば、上司と部下の関係では、部下が所有ユーザーであり、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 リクエストを使用し、その際にはリクエストを承認するで説明されている承認を含めます。この例では、読みやすくするために改行を使用しています。
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",
"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 リファレンスをご覧ください。
以下の例では、アカウント管理者は、アカウント内のすべてのユーザーを、レスポンス ページごとに 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 のエンコード関数とデコード関数が含まれています。
管理者以外のユーザーを取得する
ユーザー アカウントを変更できるのは管理者だけですが、ドメインのすべてのユーザーはユーザー プロフィールを読み取ることができます。管理者以外のユーザーは、viewType パラメータを domain_public と同じに設定して users.get または users.list リクエストを作成すると、ユーザーの公開プロフィールを取得できます。スコープ 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 では 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、ユーザーのエイリアス メールアドレスのいずれかを使用できます。リクエストとレスポンスのプロパティについては、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 のステータス コードが返されます。復元されたユーザーのアカウントを確認するには、ユーザーを取得するの操作を使用します。