IBM Security Verify API で テンプレートをカスタマイズする～準備編～

# はじめに
IBM Security Verify(ISV) APIを利用して、画面カスタマイズを行う方法についてご紹介いたします。
画面カスタマイズを行う際には、以下の流れで操作します。

- テンプレートと呼ばれるファイル群をローカルにダウンロードする
- テンプレートをローカルでカスタマイズする
- カスタマイズしたテンプレートをアップロードする。

# APIのリファレンス
APIのリファレンスは、以下のURLから確認できます。
https://<自分のテナント名＞.verify.ibm.com/developer/explorer/#

- ユーザーの取得に利用するAPIは、以下の項目になります。
- Customization

![template_base (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1183f7d8-7738-46ef-1cd1-a8e371aecd01.png)

画面カスタマイズに関するヘルプはこちらです。

- テンプレートをカスタマイズする
　カスタマイズ作業の流れが記載されています。
　https://www.ibm.com/support/knowledgecenter/ja/SSCT62/com.ibm.iamservice.doc/tasks/t_customizing_templates.html

- テンプレートをリセットする
　適用したテンプレートをリセットする方法が記載されています。
https://www.ibm.com/support/knowledgecenter/ja/SSCT62/com.ibm.iamservice.doc/tasks/t_resetting_templates.html

- テンプレート・ファイルの参照
　テンプレートを構成するファイルの説明が記載されています。
https://www.ibm.com/support/knowledgecenter/ja/SSCT62/com.ibm.iamservice.doc/concepts/c_template_files_reference.html


# 1.IBM Security VerifyへのAPIクライアントの登録
OAuth アクセストークンを取得するために使用するクライアント ID とクライアントシークレットを準備します。
ブラウザで、IBM Security Verifyの管理画面にアクセスします。
https://<自分のテナント名＞.verify.ibm.com/ui/admin

「構成」-「API クライアント」タブを開きます。
![OTP-000002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/9799fa7c-cb28-7726-df1d-ccdece0060e8.png)
「APIクライアントの追加」をクリックします。
![template_base (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1f65e069-62f2-b3b3-1d60-0fa7618f3ba6.png)

アクセス件を与えるAPIとしては以下を選択して、「保存」します。
- テンプレートの管理



登録したAPIクライアントを編集モードにすると、クライアントID/クライアント秘密鍵をコピーできます。


# 2.アクセストークンの取得

```
curl -X POST "https://<テナント名＞.verify.ibm.com/oidc/endpoint/default/token" --header "Content-Type: application/x-www-form-urlencoded" --data-urlencode "grant_type=client_credentials" --data-urlencode "client_id=<クライアントID>" --data-urlencode "client_secret=＜クライアント秘密鍵＞"
```
取得したアクセストークンは赤枠部分になります。
![qiita (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/e28268f3-3827-0a17-9f99-0743503435c8.png)


# 3.テンプレートのダウンロード方法
テンプレートをダウンロードします。
テンプレートのファイル名は、デフォルトの「templates.zip」を利用します。

```
curl -X -i GET https://<テナント名＞.verify.ibm.com:443/v1.0/branding/download -H "Authorization: Bearer <アクセストークン>" --output <出力先＞\templates.zip
```
![template_base (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/4f846ab9-ff32-6593-cb22-dd2363492af2.png)

ダウンロードしたテンプレートをエクスプローラーでみると以下のようなフォルダ階層となっています。

![template_base (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/f340dc1b-165f-c469-e103-75ca101802f3.png)

# 4.テンプレートのアップロード方法
カスタマイズしたテンプレートをアップロードします。
カスタマイズに関する考慮点がいくつかマニュアルに記載されています。

```
curl -X POST  https://<テナント名＞.verify.ibm.com:443/v1.0/branding/upload -H "Authorization: Bearer <アクセストークン>" -H "Content-Type: multipart/form-data;charset=UTF-8" -F file=@<出力先＞template.zip
```
![template_base (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/f754f09f-e5d5-11f9-21a5-d96762c864b8.png)

レスポンスコードは201になります。

# 5.テンプレートのリセット方法
テンプレートをデフォルトに戻します。

```
curl -i -X DELETE  https://<テナント名＞.verify.ibm.com:443/v1.0/branding/reset -H "Authorization: Bearer <アクセストークン>"
```
![template_base (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/00aff268-7daf-92a3-e262-d7f26ace1e74.png)

レスポンスコードは204になります。


# 最後に
準備編として、画面カスタマイズの基本的な操作、コマンドについてご紹介しました。
実践編では実際の画面を変更する方法について記載したいと思います。