詳説 Data API 2.0 Vol.5: ユーザーを管理する
Data API 1.0 では、システム管理者アカウントを持つユーザーは、他のユーザーの情報を取得したり、更新することができましたが、新しいユーザーを登録することは許可されていませんでした。
Data API 2.0 では、新しいユーザーを作成したり、ロックアウトの状態を解除するといった事が行えるようになっています。
詳説 Data API 2.0、第五回目となる今回は、ユーザーに関する APIついて解説します。
v1.0 との違い
v2.0 では、システム管理者権限が必要になりますが、ユーザーの一覧を取得することや、新しいユーザーの作成、削除を行うことが出来るようになりました。また、それに伴い、取得できる項目が増えています。
ユーザーを一覧する
ステータスが有効なユーザーの一覧を取得することができます。システム管理者の権限を有している場合は、ステータスが有効ではないユーザーについても取得できます。また、Private 属性の項目も取得することができます。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/users
- サンプル
// ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users", type: "GET", dataType: 'json', headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-listusers
新しいユーザーを作成する
システム管理者の権限を有している場合、新しいユーザーを作成することができます。
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/users
- サンプル
var user = {}; user.email = "ichikawa@example.com"; user.displayName = "Jiro Ichikawa"; user.name = "ichikawa"; user.password = "password"; // ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users", type: "POST", dataType: 'json', data: { 'user': JSON.stringify(user), }, headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-createuser
自分自身のユーザー情報を取得する
v1.0 から引き続き、:user_id として 'me' という識別子を指定すると、自身のユーザー情報を取得することができます。自身の情報を取得する場合は、認証が必須となります。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/users/me
- サンプル
// ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/me", type: "GET", dataType: 'json', headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-getuser
他ユーザーの情報を取得する
:user_id に ユーザーの ID を指定すると、そのユーザーの情報を取得することができます。ただし、認証情報とシステム管理者権限を保有していない場合は、Private 属性の項目を取得することは出来ません。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/users/:user_id
- サンプル
$.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/1", type: "GET", dataType: 'json', }).done(function( sites ) { console.log(sites); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-getuser
ユーザー情報を更新する
管理画面で行うのと同様に、自分自身のユーザー情報を変更することができます。変更点だけを送ることも、ユーザー情報を取得してから更新することもできます。
- エンドポイント
- PUT http(s)://path/to/mt-data-api.cgi/v2/users/:user_id
- サンプル
// ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var user = {}; user.password = 'new password'; user.displayName = 'New Display Name'; var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/me", type: "PUT", dataType: 'json', data: { user: JSON.stringify(user) }, headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-updateuser
ユーザーを削除する
管理画面で行うのと同様に、ユーザーを削除することができます。自分自身や、システム管理者のアカウントは削除することができません。削除に成功すると、削除されたユーザーの情報が取得できます。ただし、すでにデータベース上からは削除されていますので、ユーザー情報を更新して保存するという事はできません。
- エンドポイント
- DELETE http(s)://path/to/mt-data-api.cgi/v2/users/:user_id
- サンプル
// ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/2", type: "DELETE", dataType: 'json', headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-deleteuser
ロックアウトを解除する
Movable Type には、サインインを一定回数失敗した時に、ユーザーアカウントをロックする機能を提供しています。(詳細)アカウントをロックされたユーザーは、設定された時間が経過するか、システム管理者がロック状態を解除するまで、サインインをおこなうことができません。
Data API 2.0 では、このロックの解除を API で実行できるようになっています。ロックの解除には、システム管理者の権限を必要とします。
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/users/:user_id/unlock
- サンプル
// ユーザー認証 $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/3/unlock", type: "POST", dataType: 'json', headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-unlockuser
特定のユーザーにパスワードリセット用メールを送信する
管理画面から行うのと同様に、特定のユーザーに対してパスワードのリセット用リンクを送信することができます。メールを受信したユーザーは、Movable Type の画面で自身のパスワードを変更することができます。この API の実行には、システム管理者の権限が必要です。
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/users/:user_id/recover_password
- サンプル
$.ajax({ url: "http://path/to/mt-data-api.cgi/v2/authentication", type: "POST", dataType: "json", data: { 'username': 'Your Sign In ID', 'password': 'Your Sign In Password', 'clientId': 'test' } }).done(function(data){ var token = data.accessToken; var t = "MTAuth accessToken=" + token; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/1/recover_password", type: "POST", dataType: 'json', headers: { 'X-MT-Authorization': t } }).done(function( sites ) { console.log(sites); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-recoverpasswordforuser
ユーザーが自身でパスワードリセット用メールを要求する
サインイン画面から、パスワードリセットを行うのと同様に、ユーザーが自ら パスワードリセットの要求を API 経由でおこなうことができます。
通常は、email パラメータに登録ユーザーのメールアドレスを指定して呼び出すだけですが、同じメールアドレスを持つユーザーが複数存在する場合は、name パラメータに サインインのユーザー名を指定する必要があります。
このエンドポイントは、セキュリティの観点から、結果として常に status: sucess を返します。これは、emailやname パラメータによってユーザーを発見できなかった場合でも同様です。
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/recover_password
- サンプル
$.ajax({ url: "http://path/to/mt-data-api.cgi/v2/users/1/recover_password", type: "POST", dataType: 'json', }).done(function( sites ) { console.log(sites); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#users-recoverpassword