【MotionBoard】APIを使ってユーザを作成＆グループに紐付けする方法

# やりたいこと
MotionBoardというBIツールでは、GUI操作で様々なデータを可視化することができます。
運用の際にはボードを作成するユーザと閲覧ユーザを設定することが基本ですが閲覧ユーザは多数になることが多いです。
その場合、いちいちマウスクリックで追加していくのは手間なのでMotionBoardで用意されたAPIで一気に作ってみようと思います。

MotionBoardのWeb APIマニュアルを参考にしています。

https://cs.wingarc.com/manual/mb/6.1/ja/UUID-b0985959-0d97-f5c1-03c7-d62f258d99b1.html

# ユーザを作成する
### 作成するユーザのリストを作る
作るユーザのリストを下記のようにcsvで作ります。
フォーマットは「ユーザID,ユーザ名,パスワード,パスワード変更の催促をするか否か」をダブルクォーテーションで囲んだ形になります。
ヘッダは不要です。

```add_user.csv
"api_added_user1","api_added_user1","api",""
"api_added_user2","api_added_user2","api",""
"api_added_user3","api_added_user3","api",""
```

### curlでリクエストを送る
今回はcurlという様々な通信方式でデータをやり取りできるコマンドを使っていきます。
UNIX系のコマンドですが、最近ではWindowsでも利用できます。
ユーザ作成リストのcsvファイルからユーザ作成を行うコマンドはこんな感じです。
※［］で囲まれている部分は環境に合わせて書き換えてください。

```
curl -X POST -F "uploadFile=@C:/Users/[csvが置いてある場所]/add_user.csv" -F "id=[ユーザID]" -F "pw=[パスワード]" -F "command=add"　http://localhost:8787/motionboard/rest/directory/import/local/user
```

こちらのコマンドをコマンドプロンプトに入力して実行してください。
**注意**
・パラメータに指定したユーザはユーザ作成権限のあるユーザにしてください。
・csvのパスを指定する際は、Windowsであっても/（スラッシュ）区切りです。

MotionBoardにログインして、ユーザが作成されたか確認します。
ログイン後、スタートページは画面下の「閉じる」で閉じます。

![2021-12-23_13h53_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/f9ba39ec-57ee-bec7-5481-cdd542928db7.png)

右上のメニューから管理→システム設定→ユーザー→ユーザー

![2021-12-23_13h55_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/94a7f8ec-c828-8438-7620-bcde9243df62.png)

![2021-12-22_16h33_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/557191fd-a8c2-ea31-315d-4d859ec130da.png)

システム設定のユーザの画面左側にcsvに書いたユーザが登録されていることが確認できます。

# 権限グループに追加する
作成したユーザを閲覧グループに所属させます。

### 権限グループを作る
まずは、権限のグループを作成します。
MotionBoardの管理→システム設定→ユーザー→グループ

![2021-12-22_17h03_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/cc76d9cf-9138-8c7d-0e71-a55c3433f22e.png)

画像にそって、今回は閲覧グループを作成します。

![2021-12-22_17h06_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/4de2052f-0265-698f-6f4a-061208b63370.png)
①新規作成
②グループIDに「閲覧グループ」と入力
③「ロール名一覧」から「閲覧ユーザ」を「ロール名」欄にドラッグ＆ドロップ
④「追加」クリック

### ユーザと権限グループの紐付けリストを作る
下記のように作成したユーザと権限グループを紐付けるリストを作ります。
フォーマットは「グループID,ユーザID,グループに所属させる(1)か除外するか(2)」です。
グループIDとユーザIDはダブルクォーテーションで囲みます。
**注意**
ユーザIDはドメインまで（@&#xFFF0;local）入力するのを忘れないようにしてください。

```group_relation.csv
"閲覧グループ","api_added_user1@local",1
"閲覧グループ","api_added_user2@local",1
"閲覧グループ","api_added_user3@local",1
```

### curlでリクエストを送る
ユーザ作成時と同様に、グループとユーザを紐付けるリクエストをcurlで送ります。
※［］で囲まれている部分は環境に合わせて書き換えてください。

```
curl -X POST -F "uploadFile=@C:/Users/[csvが置いてある場所]/group_relation.csv" -F "id=[ユーザID]" -F "pw=[パスワード]"　http://localhost:8787/motionboard/rest/directory/import/local/groupuserrelation
```

システム設定のユーザ画面を開き、どれでも良いので左のユーザをクリックします。
各ユーザが「閲覧グループ」に所属していることが確認できます。

![2021-12-23_09h42_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2254022/08e1448b-b339-070c-b2bb-b86de28e3e6e.png)

# クラウドの場合
上記の例は、オンプレかつMotionBoardがlocalhostにある場合です。
MotionBoardのサーバがローカルにない場合はIPを変えれば問題ないですが、クラウドの場合はさらにいくつか相違点があります。

https://cs.wingarc.com/ja/kb/000016101

MotionBoard CloudにAPIでユーザ作成する場合のコマンドは以下のようになります。
※［］で囲まれている部分は環境に合わせて書き換えてください。

```
curl -X POST -F "uploadFile=@C:/Users/[csvが置いてある場所]/add_user.csv" -F "tenant=[テナント名]" -F "id=[ユーザID]" -F "pw=[パスワード]" -F "command=add"　https://https://cloud-up.motionboard.jp/motionboard/rest/directory/import/local/user
```
オンプレとの違いは以下です。
・tenantのパラメータを追加する
・http **s** でアクセスする。
・ドメインはhttps://cloud-up.motionboard.jp
・ユーザ追加後、指名ユーザに登録する。

また、リアルタイム連携のAPIを利用する場合のドメインは iot-cloud.motionboard.jp になります。

https://cs.wingarc.com/manual/mb/cloud/ja/UUID-b0985959-0d97-f5c1-03c7-d62f258d99b1.html#UUID-df21a715-f5e6-00b4-6314-cb9981a6b702_d38915e271298