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' }

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

以上です。

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