Mastodon のメディアの description をあとから変更するときに勘違いした話

feather for Mastodon で投稿を編集する機能を作りました。

その時にAPIの使い方で勘違いしたことがあったので紹介します。

まず投稿の編集のために PUT /api/v1/statuses/:id というAPIがあります。

statuses API methods - Mastodon documentation

そしてメディアの(メタデータの)編集のために PUT /api/v1/media/:id というAPIがあります。

media API methods - Mastodon documentation

すでに投稿済みの投稿に添付されているメディアのdescriptionを編集するには PUT /api/v1/media/:id を使えば良いと思っていましたが、実際に叩いてみると404エラーとなってしまいました。

Chromeのdev tool でブラウザのMastodonを使って投稿(メディアの description)を編集してみると PUT /api/v1/statuses/:idmedia_attributes を使っていることが確認できました。

しかし、PUT /api/v1/media/:id でもできるんじゃないの?と思い込んでしまったためなかなか間違いに気が付かなかったです。

そんなこんなで困ってこんな投稿をしたところ使うAPIが違う事に気が付きました。

covelline.social

PUT /api/v1/media/:idは投稿に紐付ける前のメディアに対して使うAPIでした。 ※ Mastodon のアプリはよく添付するメディアを選んだときにアップロード処理を行っています。feather では通信量の削減のために投稿を行う直前にメディアのアップロードを行っています。

最終的にPUT /api/v1/statuses/:idmedia_attributes を使うことでちゃんと更新できました。