5.10. バッチオペレーション¶
-
POST
/1/
(tenantId)/users/_batch
¶ 複数ユーザを同時に追加・更新・削除する。
Request Headers: - X-Application-Id -- アプリケーションID(必須)
- X-Application-Key -- マスターキー(必須)
- Content-Type -- application/json
Request JSON Object: - request (array) -- オペレーションの配列
Status Codes: - 200 OK -- 正常実行した
- 400 Bad Request -- パラメータ/リクエストボディ不正
- 401 Unauthorized -- 認証エラー
- 403 Forbidden -- 権限エラー
- 415 Unsupported Media Type -- Content-Type 不正
Response JSON Object: - results (array) -- オペレーション実行結果の配列
リクエストボディ
リクエストボディの例を示す。
{ "requests": [ { "op": "insert", "user": { "_id": "xxxxxxxx", "username": "tarou", "email": "nichiden.tarou@example.com", "password": "Passw0rd", "groups": [ "group1", "group2" ], "options": { "displayName": "日電 太郎", "division": "日電事業部" }, "clientCertUser": true } }, { "op": "update", "_id": "yyyyyyyy", "etag": "ff123cc6-01a9-11e4-9be6-d39577f35b51", "user": { "username": "tarou", "email": "nichiden.tarou@example.com", "password": "Passw0rd", "options": { "displayName": "日電 太郎", "division": "日電事業部" }, "enabled": false }, }, { "op": "delete", "_id": "zzzzzzzz", "etag": "11b6cedc-01aa-11e4-88f1-0b3208ae4242" } ] }
データは "requests" に配列で指定する。サーバ側ではこの配列の先頭から順に処理が実行される。
各要素には以下の要素を指定する。
- op : 操作 (必須)
- insert(追加), update(更新), delete(削除) のいずれかを指定
- _id : 操作対象ユーザのユーザID
- update, delete の場合は必須
- insert の場合は不要
- etag : ユーザ情報のETag (オプション)
- update, delete の場合は、ETag の指定が可能。指定した場合は、楽観ロックが実施される(サーバ側ユーザ情報と ETag 照合がされる)。
- user : ユーザ情報
- insert の場合は、サインアップ のリクエストボディで指定するユーザ情報と同様
- ユーザID("_id")の指定が可能。指定した場合は、指定したユーザIDでユーザ登録される。
- update の場合は、ユーザ情報変更 (パスワード変更を含む) のリクエストボディで指定するユーザ情報と同様
- 指定したフィールドのみが更新される
- delete の場合は、本フィールドは不要
- groups : 所属グループ (オプション)
- insert の場合のみ指定可能
- 登録するユーザを所属させるグループ名を指定
- 既に作成済みのグループを指定すること
- clientCertUser : クライアント証明書ユーザフラグ(boolean)
- insert の場合のみ指定可能
- クライアント証明書認証を行うユーザを登録する場合は true をセットすること
- true の場合は、username は必須、email, password は不要
- insert の場合は、サインアップ のリクエストボディで指定するユーザ情報と同様
レスポンスボディの例
{ "results": [ { "result": "ok", "_id": "...", "etag": "...", "updatedAt": "...", "user": { /*USER*/ } }, { "result": "conflict", " reasonCode ": " etag_mismatch ", "_id": "...", "etag": "...", "updatedAt": "...", "user": { /*USER*/ }, }, { "result": "serverError", "_id": "..." }, { "result": "ok", "_id": "...", "etag": "...", "updatedAt": "...", "user": { /*USER*/ }, } ] }
results 配列に、リクエスト時のオペレーションに対応した個数の JSON データが格納される。 また、この並び順はリクエストの配列の順番に対応している。データには以下のフィールドが設定される。
- result : 実行結果。以下のいずれか。
- ok : 正常に操作が完了した。
- conflict : 衝突が発生した。
- notFound : 該当ユーザが存在しない
- badRequest : リクエスト不正
- forbidden : 権限不正
- serverError : その他のエラー
- reasonCode : conflictの理由。Resultがconflictの場合のみ付加。以下のいずれか。
- unspecified : 不明(初期値)
- request_conflicted : 更新・削除処理衝突(更新・削除中に該当ユーザに変更発生)
- duplicate_key : ユニーク制約エラー(重複エラー)
- etag_mismatch : ETagが衝突(比較エラー)
- _id : ユーザID。insertでエラーとなった場合は付加されない。
- etag : 更新後の ETag 値
- updatedAt : 更新時刻
- user :
- resultがokの場合: 更新されたユーザ情報。作成・更新・削除 API のレスポンスボディと同じもの。
- エラーの場合: "etag_mismatch" の場合のみユーザ情報が格納され、それ以外の場合はなし。
注意事項
- insert とupdate (パスワード更新)の場合は、処理に時間がかかるため、一度のバッチにおけるユーザ数の上限を100件程度とすることを推奨する。
- ユーザ登録・更新時の本人確認、本人通知メールは送信しない。
- その他の注意事項についてはオペレーション(op)により、サインアップ(insert)、ユーザ情報変更(update)、ユーザ削除(delete)の節の注意事項を参照のこと。