詳説 Data API 2.0 Vol.4: ウェブサイトやブログを管理する
Data API 2.0 から出来るようになった事のひとつに、ウェブサイト・ブログの管理があげられます。ここでいう管理とは、CMS 画面からの操作と同様に設定を変更することや、新しくウェブサイト・ブログを作成すること。または、既存のウェブサイト・ブログを削除することを示します。
詳説 Data API 2.0、第四回目は ウェブサイトとブログの管理についてお届けします。
v1.0 との違い
v1.0 では、自身がアクセスできるウェブサイトとブログの一覧を取得することと、個別のウェブサイト・ブログの情報を取得することができました。
v2.0 では、それらに加えて、ウェブサイト・ブログの作成・更新・削除を行うことができるようになっています。また、ウェブサイト配下のブログの一覧を取得することや、すべてのウェブサイトとブログを一覧することもできます。
取得できる項目も大幅に増えており、適切な権限を有する場合は、ほぼすべてのの情報にアクセスすることが可能です。
自分がアクセスできるウェブサイトとブログを一覧する
記事の作成などの権限を持っているウェブサイトとブログの一覧を取得することができます。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/users/:user_id/sites
- サンプル
-
// ユーザー認証 $.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/sites", 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#sites-listbyuser
ウェブサイト配下のブログを一覧する
特定のウェブサイトに属するブログの一覧を取得することができます。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/children
- サンプル
-
$.ajax({ url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/1/children", type: "GET", dataType: 'json' }) .done(function( data ) { console.log(data); });
ウェブサイトを作成する
ウェブサイトを作成する権限を有している場合、ウェブサイトを新規に作成することができます。作成に最低限必要な情報は、以下のとおりです。必要に応じて他のフィールドの情報を追加できます。
ウェブサイトのサイトパスに、初期値が指定されているか、BaseSitePath 環境変数で指定されている場合、サイトパスは初期値で指定されているパスから始まる必要があります。
- name: ウェブサイト名
- url: ウェブサイト のサイト URL
- sitePath: ウェブサイトのサイトパス
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/sites
- サンプル
-
var newWebsite = {}; newWebsite.name = "New WebSite"; newWebsite.url = "http://example.com/"; newWebsite.sitePath = "/path/to/document_root"; $.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/sites", type: "POST", dataType: 'json', data: { website: JSON.stringify(newWebsite) }, headers: { 'X-MT-Authorization': t } }) .done(function( data ) { console.log(data); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#sites-insertnewwebsite
ブログを作成する
ブログを作成する権限を有している場合、指定されたウェブサイトの下に新しいブログを作成することができます。エンドポイントに含まれる :site_id には、ブログを作成するウェブサイトの ID を指定します。作成に最低限必要な情報は、以下のとおりです。必要に応じて他のフィールドの情報を追加できます。
- name: ブログ名
- url: ブログ のサイト URL
- sitePath: ブログのサイトパス
- エンドポイント
- POST http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id
- サンプル
-
// // ウェブサイトからの相対パスでサイトパスを指定する場合 // var newBlog = {}; newBlog.name = "New Blog"; newBlog.url = "/::/blog"; newBlog.sitePath = "blog"; $.ajax({ url: "http://localhost/cgi-bin/mt/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://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/1", type: "POST", dataType: 'json', data: { blog: JSON.stringify(newBlog) }, headers: { 'X-MT-Authorization': t } }) .done(function( data ) { console.log(data); }); }); // // 絶対パスでサイトパスを指定する場合 // var newBlog = {}; newBlog.name = "New Blog"; newBlog.url = "/::/blog"; // 絶対パスを指定する newBlog.sitePath = "/path/to/document_root"; $.ajax({ url: "http://localhost/cgi-bin/mt/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://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/1", type: "POST", dataType: 'json', data: { blog: JSON.stringify(newBlog) }, headers: { 'X-MT-Authorization': t } }) .done(function( data ) { console.log(data); }); }); // // サブドメインでサイト URL を指定する場合 // var newBlog = {}; newBlog.name = "New Blog"; // 「サブドメイン./::/パス名」という形式で指定する newBlog.url = "blog./::/"; newBlog.sitePath = "/path/to/document_root/blog.example.com"; $.ajax({ url: "http://localhost/cgi-bin/mt/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://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/1", type: "POST", dataType: 'json', data: { blog: JSON.stringify(newBlog) }, headers: { 'X-MT-Authorization': t } }) .done(function( data ) { console.log(data); }); });
ウェブサイト・ブログを取得する
認証を伴わないでも、ウェブサイト・ブログの情報を取得することができます。ただし、取得できるのは Private ではない情報のみに制限されます。適切な権限を有している場合は、認証情報を付与することで、すべての情報を取得できます。
- エンドポイント
- GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id
- サンプル
-
$.ajax({ url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/1", type: "GET", dataType: 'json', }) .done(function( res ) { console.log(res); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#sites-getblog
ウェブサイト・ブログの設定を更新する
ウェブサイト・ブログの設定を変更する権限を有する場合、設定を変更することができます。変更するときは、変更する内容だけを指定することもできます。
- エンドポイント
- PUT http(s)://path/to/mt-data-api.cgi/v2/sites/:site_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/sites/1", type: "GET", dataType: 'json', headers: { 'X-MT-Authorization': t } }) .done(function( site ) { site.name = "New Site"; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/sites/1", type: "POST", dataType: 'json', data: { website: JSON.stringify(site), __method: 'PUT' }, headers: { 'X-MT-Authorization': t } }) .done(function( res ) { console.log(res); }); }); }); // // 変更点を指定して、内容を変更する // $.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; var data = {}; data.name = "Temporary Change"; $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/sites/1", type: "POST", dataType: 'json', data: { website: JSON.stringify(data), __method: 'PUT' }, headers: { 'X-MT-Authorization': t } }) .done(function( res ) { console.log(res); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#sites-updatesite
ウェブサイト・ブログを削除する
ウェブサイト・ブログを削除する権限を有する場合、削除をすることができます。ただし、子ブログが残っているウェブサイトは、先にブログを消さないとウェブサイトを削除できません。
- エンドポイント
- DELETE http(s)://path/to/mt-data-api.cgi/v2/sites/:site_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/sites/4", type: "POST", dataType: 'json', data: { __method: 'DELETE' }, headers: { 'X-MT-Authorization': t } }) .done(function( res ) { console.log(res); }); });
- ドキュメント
- https://www.movabletype.jp/developers/data-api/v2-reference.html#sites-deletesite