Fedibirdの投稿の絵文字リアクション、クライアントアプリで表示するのは簡単だよ。

static_urlがアニメーションしないカスタム絵文字画像、urlがアニメーションする(こともある)カスタム絵文字画像。

account_idsは誰がリアクションしたかの情報で、無視してもいいし、手元にアカウント情報持ってないやつだけ/api/v1/accounts?id[]=1111&id[]=1112&id[]=1113ってAPIコールして欲しいのだけ拾ってきてもらってもいい。

@noellabo 実装するわけではないのでただの興味本位なのですが、Mastodonにおける"account_id"って、同一人物でもサーバーごとに異なるものが振られて管理されているのでしょうか?

@kussy_tessy そうです。account_idはサーバ固有です。

たとえば私のaccount_idは1ですが、そんな番号になるのは、もちろんサーバごとだからです。

ActivitiPub全体でのIDは、URI形式で になります(リンクに変換されるので画像もつけておきます)。

@kussy_tessy APIは、クライアントと直接やりとりするサーバの間のやりとりを規定していて、他のサーバとのやりとりは想定されていません。

たとえば noellabo@fedibird.com という文字列からaccount_idを知りたい時は、/api/v1/accounts/lookup?acct=noellabo@fedibird.com というAPIコールを行って取得します。

グローバルな表現と、ローカルな表現を、必要な時に変換しながら操作します。

@noellabo なるほど。
/api/v1/accounts/:idが「おたくのサーバーでIDが:idって人がいるらしいんですけど、どこの誰ですか?」で/api/v1/accounts/lookup?acct=:acctが「Fedivirse界に:acctってやつがいるみたいなんですけど、おたくはご存知ですか? 知ってたらIDは何番ですか?」みたいな感じですかね?

@kussy_tessy うん、そうそう。

クライアントアプリ書くときは特にそうなんだけど、サーバをまたいだマルチアカウント対応して、違うサーバのアカウントでブーストするとか、サーバを跨いだ操作をしたくなることがあるんで、そういうときに違うサーバのaccount_idとかstatus_idを調べないといけないのね。

ユーザー操作に対応する場合は、別に検索用のAPIも使えるんだけど、だいたいそんな感じ!

フォロー

@noellabo SubwayTooterで叩いているAPIが見えるんですけど、何回か異なるAPIを叩いているみたいなんですよね。必然的に通信回数は増えるものの、サーバー間の違いやアカウントの違いををあまり意識せずにフォローやブーストができるの、うまくできている仕組みだなあ……。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。