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/:id
の media_attributes
を使っていることが確認できました。
しかし、PUT /api/v1/media/:id
でもできるんじゃないの?と思い込んでしまったためなかなか間違いに気が付かなかったです。
そんなこんなで困ってこんな投稿をしたところ使うAPIが違う事に気が付きました。
PUT /api/v1/media/:id
は投稿に紐付ける前のメディアに対して使うAPIでした。
※ Mastodon のアプリはよく添付するメディアを選んだときにアップロード処理を行っています。feather では通信量の削減のために投稿を行う直前にメディアのアップロードを行っています。
最終的にPUT /api/v1/statuses/:id
の media_attributes
を使うことでちゃんと更新できました。