[Gmail API] JavaでGmailの代理人の情報を取得する

Gmail API v1（Java）を使用して、
Gmailの代理人の情報を取得するを取得する方法
についてご紹介します。

**代理人とは**
ユーザーやグループを代理人に指定してGmailアカウントへのアクセスを許可すると、
代理人は受信トレイで次の操作ができます。
・フィルタ（ルール）でメールを自動的に振り分ける
・メールをアーカイブしてやりとりの記録を残す
・ラベルを使用してメールのステータスを管理する
・送信者として代理人名を表示する、または表示しない
代理人は、受信トレイの共有と同義です。

このAPIは、ドメイン全体の権限を委任されたサービスアカウントを
使用しての発行のみ利用可能です。OAuth 2.0では利用できません。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Gmail API] JavaでGmail APIを使う](https://qiita.com/doran/items/a078e966bfd93c4b19c2)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[代理人情報リストを取得](#1-代理人情報リストを取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[代理人情報を取得](#2-代理人情報を取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](213-レスポンスの内容)|

## 1. 代理人情報リストを取得
指定されたアカウントの代理人一覧を取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

```java
public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Delegates delegates = settings.delegates();
	Gmail.Users.Settings.Delegates.List list = delegates.list("メールアドレス");

	ListDelegatesResponse res = list.execute();
	System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/delegates
が実行されます。

#### 1.2.2. クエリパラメータ
クエリパラメータはありません。

### 1.3. レスポンスの内容

#### ListDelegatesResponse

|メソッド|戻り値|説明|
|---|---|---|
|getDelegates|List\<[Delegate](#delegate)\>|代理人のリスト|

#### Delegate

|メソッド|戻り値|説明|
|---|---|---|
|getDelegateEmail|String|代理人メールアドレス|
|getVerificationStatus|[VerificationStatus(enum)](#verificationstatus)|アカウントの代理人として機能できるか|

#### VerificationStatus

|定義値|内容|
|---|---|
|verificationStatusUnspecified|未設定|
|accepted|アドレスはアカウントの代理人として機能|
|pending|確認リクエストがそのアドレスに送信されましたが、所有者はまだそれを受け入れていない|
|rejected|確認リクエストがそのアドレスに郵送されましたが、所有者はそれを拒否|
|expired|確認リクエストがそのアドレスに送信されましたが、確認されないまま期限切れ|


## 2. 代理人情報を取得
代理人情報を取得します。

取得したいキーペアのIDを指定します。
[1. 代理人情報リストを取得(Delegate)のgetDelegateEmail()](#delegate)
で取得した値を設定します。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行

```java
public static void main(String[] args) throws Exception{
	Gmail gmail = getGmail();
	Gmail.Users users = gmail.users();
	Gmail.Users.Settings settings = users.settings();

	Gmail.Users.Settings.Cse.Keypairs keypairs = settings.cse().keypairs();
	Gmail.Users.Settings.Cse.Keypairs.Get get = keypairs.get("メールアドレス","キーペアID");

	CseKeyPair res = get.execute();
	System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/delegates/{代理人メールアドレス}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

### 2.3. レスポンスの内容

#### CseKeyPair

[1.3. レスポンスの内容(Delegate)](#delegate)と同じです。

<br>
<br>
おしまい。。