Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Blogブログ

詳説 Data API 2.0 Vol.2: 強化されたアイテム処理

Data API 2.0 では、アイテムに関連する処理が大幅に増強されています。これは、エンドポイントの数もそうですが、取得するアイテムのデータについても言えます。

詳説 Data API 2.0 の連載二回目は、このアイテムについて説明します。

1.0 との違い

Data API 1.0 では、アイテムのアップロードのみサポートされていましたが、Data API 2.0 では、アイテムの取得・更新・削除・一覧という操作はもちろんの事、サムネイルの作成もできるようになります。また、1.0 のアップロード用エンドポイント /sites/{site_id}/assets/upload は、廃止候補となり、新たに /assets/upload?site_id=:site_id というエンドポイントが追加されます。

アイテムの更新ができるようになった事にともない、アイテムのリソースデータについても項目が大幅に増えています。アイテムのリソースデータの詳しい内容については、以下のドキュメントをご覧ください。Version というカラムに v2 と記述されている項目が、2.0 で新たに取得、または更新(Read Only ではない項目のみ)を行う事ができるようになった項目です。

エンドポイント解説

Data API 2.0 で利用可能なエンドポイントについて解説します。各エンドポイントで指定できるパラメータについては、各エンドポイントのドキュメントをご覧ください。

アイテムのアップロード

前述のとおり、新しいアップロード用のエンドポイントが追加されています。Data API 2.0 以降では新しいエンドポイントを使用することを推奨します。使い方は、Data API 1.0 と変わりません。ファイルをアップロードするには、accessToken を取得する必要があります。accessToken の取得については、こちらを参照してください。

エンドポイント
POST http(s)://path/to/mt-data-api.cgi/v2/assets/upload
サンプルコード
<form id="form">
    <input type="hidden" name="site_id" value="<mt:BlogID>">
    <input type="hidden" name="autoRenameIfExists" value="1">
    <div>Path: <input type="text" name="path" id="path" value="/"></div>
    <div>File: <input type="file" name="file" id="upload_file"></div>
    <input type="submit">
</form>
var fd = new FormData($('#form').get(0));
var t = "MTAuth accessToken=" + TOKE_IN_THIS_SESSION;
$.ajax({
    url: "http://path/to/mt-data-api.cgi/v2/assets/upload",
    type: "POST",
    data: fd,
    processData: false,
    contentType: false,
    dataType: 'json',
    headers: {
        'X-MT-Authorization': t
    }
})
 .done(function( data ) {
    console.log(data);
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-uploadasset

サムネイルを作成する

特定の画像アイテムのサムネイルを作成することができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets/:asset_id/thumnail
サンプルコード
$.ajax({
    url: "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/" +asset_id + "/thumbnail?width=200&square=1",
    type: "GET",
    dataType: 'json'
})
.done(function( data ) {
    $('#result').append('<img src="' + data.url + '" width="200">');
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-getthubmbnail

アイテムの一覧を取得する

アイテムの一覧を取得する方法として4種類のエンドポイントを用意しました。

サイトに登録されているアイテムの一覧を取得する

ウェブサイト又はブログに登録されているアイテムの一覧を取得する事ができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets
サンプル
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    console.log(data);
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-listassets

記事に関連付いているアイテムの一覧を取得する

特定の記事と関連づけされているアイテムの一覧を取得する事ができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/entries/:entry_id/assets
サンプル
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/entries/1/assets",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    console.log(data);
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-listassetsforentry

ウェブページに関連付いているアイテムの一覧を取得する

特定のウェブページと関連づけされているアイテムの一覧を取得する事ができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/pages/:page_id/assets
サンプル
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/pages/1/assets",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    console.log(data);
});

ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-listassetsforpage

タグが割り当てられているアイテムの一覧を取得する

特定のタグが割り当てられているアイテムの一覧を取得する事ができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/tags/:tag_id/assets
サンプル
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/tags/1/assets",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    console.log(data);
});

ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-listassetsforsiteandtag

アイテムを取得する

特定のアイテムについての情報を取得することができます。

エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets
サンプル
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/1",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    console.log(data);
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-getasset

アイテムの情報を更新する

特定のアイテムの情報を更新することができます。ユーザー認証が必要です。

エンドポイント
PUT http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets/:asset_id
サンプル
// 更新対象を取得 (ID: 1)
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/1",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    var t = "MTAuth accessToken=" + token.accessToken;
    data.description = "New Description";
    $.ajax({
        url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/" + data.id,
        type: "PUT",
        data: {
            asset: JSON.stringify(data)
        },
        dataType: 'json',
        headers: {
            'X-MT-Authorization': t
        }
    })
    .done(function(data){
        console.log(data);
    });
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-updateasset

アイテムを削除する

特定のアイテムを削除することができます。ユーザー認証が必要です。返却される Assets リソースは、すでに Movable Type 上からは削除されています。更新などには利用できません。

エンドポイント
DELETE http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets/:asset_id
サンプル
// 削除対象を取得 (ID: 1)
$.ajax({
    url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/1",
    type: "GET",
    dataType: 'json',
})
.done(function( data ) {
    var t = "MTAuth accessToken=" + token.accessToken;
    data.description = "New Description";
    $.ajax({
        url: "http://localhost/cgi-bin/mt/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/" + data.id,
        type: "DELETE",
        data: {
            asset: JSON.stringify(data)
        },
        dataType: 'json',
        headers: {
            'X-MT-Authorization': t
        }
    })
    .done(function(data){
        console.log(data);
    });
});
ドキュメント

https://www.movabletype.jp/developers/data-api/v2-reference.html#assets-deleteasset

Appendix

アクセストークンを取得する

ユーザー認証が必要なエンドポイントへアクセスする場合、AccessToken を取得する必要があります。ブラウザーから利用する場合は、Movable Type が表示する認証画面を経由して AccessToken を取得する方法を推奨しています。

<button id="login" name="login" value="login">Login</button>
$('#login').click( function() {
            location.href = "http://path/to/mt-data-api.cgi/v2/authorization?redirectUrl=" + encodeURIComponent( window.location ) + "&clientId=YOUR-APP-ID";
        });

/v2/authorization というエンドポイントに、redirectUrlclientId を指定して呼び出すと、おなじみの Movable Type の認証画面にリダイレクトされます。入力された認証情報が正しければ、redirectUrl に指定された URL に mt_data_api_access_token というCookie 付きでリダイレクトされます。リダイレクトされたページでは、Cookie に入っている accessToken の値を AccessToken として利用します。

  • このエントリーをはてなブックマークに追加