Movable Type の Data API でウェブサイトやブログを更新するときの注意点

Movable Type の Data API でウェブサイトやブログを更新する際にハマりそうなポイントがあったのでご紹介します。

Movable Type の Data API の JavaScript SDK を使って既存のウェブサイトやブログを更新する場合は updateSite() というメソッドを利用します。

この updateSite() を使って、ID が 1 のウェブサイトのタイトルを website 1 に変更しようと思い、下記のように書いて実行してみました(事前に Data API のインスタンス api を作成し、認証を通過しているものとします)。

api.updateSite(1, { name: 'website 1' }, function(response){
 console.log(response);
});

しかし、これだと 400 エラーとなり、レスポンスで A resource "website" is required. と言われてしまいました。

これを正しく実行するには、 updateSite() の第2引数を下記のようにしなければならないようです。

api.updateSite(1, { website: { name: 'website 1' } }, function(response){
 console.log(response);
});

もう少し見やすくすると、

var updateSite = {
 website: {
 name: 'website 1'
 }
};
api.updateSite(1, updateSite, function(response){
 console.log(response);
});

となります。

もし更新する対象がウェブサイトではなくてブログであれば、

var updateSite = {
 blog: {
 name: 'ブログ 1'
 }
};

のようになります。

これ、ドキュメントがなく、ハマりポイントかもしれないので共有しておきます。

【2017/01/11 追記】ユーザー情報を更新する場合

ユーザー情報を更新するときは、 .updateUser() に、第一引数としてユーザーIDを、第二引数としてユーザー情報のオブジェクトを渡しますが、そのオブジェクトは、

{ user: { displayName: 'tinybeans' } }

とせずに、

{ displayName: 'tinybeans' }

としないとダメなようです。

以上です。

Published 2016-12-13
Updated 2019-06-25