絵文字リアクションAPI - kmycode/mastodon GitHub Wiki

対応可否の判定方法

下記のエンドポイントで取得できるJSONについて

/api/v1/instance
/api/v2/instance

下記の配列に値があるかで判定してください

{
  "fedibird_capabilities": [
    "emoji_reaction"
  ]
}

サーバー設定の取得方法

上と同じJSONに以下の値があります

{
  "configuration": {
    "emoji_reactions": {
      "max_reactions": "(数値)1つの投稿につけられる最大数",
      "max_reactions_per_account": "(数値)1つのアカウントが1つの投稿につけられる最大数"
    }
  }
}

Fedibird互換情報

当サーバーの絵文字リアクション機能はFedibirdと互換性があります。

  • 【23/4現在】絵文字個別削除APIはFedibirdと一部非互換ですが、クライアント側は1つのコードでFedibirdと同時対応可能です。詳細は当該説明をご確認ください。
  • 【23/4現在】諸事情により、FedibirdのAPIと全く動作が同じでエンドポイントだけが異なる追加APIが2つあります
  • 【23/9現在】絵文字リアクションをつける権限があるかは、accountother_settingsにあるemoji_reaction_policyを確認してください。これはkmyblue独自の仕様です

既存のオブジェクトに追加されたプロパティ

statusオブジェクトに以下のプロパティが追加されています。

{
  "emoji_reactions": [],
  "emoji_reactions_count": "(数値)絵文字リアクションのカウント"
}

emoji_reactionsは、以下のオブジェクトの配列です。

{
  "name": "(文字列)絵文字リアクションの名前。😀/igyoのいずれかのフォーマットが入る。ドメイン名は含まれない",
  "count": "(数値)その絵文字リアクションがつけられた数",
  "url": "(文字列|undefined)カスタム絵文字のURL",
  "static_url": "(文字列|undefined)アニメーションするカスタム絵文字の場合、アニメーションしない画像のURL",
  "domain": "(文字列|undefined|null)リモートからのカスタム絵文字の場合、カスタム絵文字のドメイン",
  "status_id": "(文字列)対象となる投稿ID",
  "account_ids": "(文字列配列)その絵文字を付けたアカウントIDの配列"
}

このほかにも、自分がつけたかどうかをあらわす論理値の格納されたmeプロパティが存在します(trueなら自分がつけた絵文字である)。これはFedibirdとの互換のために提供していますが、kmyblueでは非推奨です。理由として、ストリーミングで配信されるデータにmeは含まれません。代わりに、account_ids配列に自分のIDがあるかを確認する方法を一律で使うことを推奨しています。

既存のストリーミングに追加されたイベント

ストリーミングで、以下のイベントが追加されています。

emoji_reaction

これは、投稿の絵文字リアクション情報が更新(追加/削除両方を含む)されたときに、当該の絵文字に関する最新情報が配信されます。(1つの投稿に複数種類の絵文字リアクションが存在する場合でも、その中の追加・削除された絵文字に関する情報だけが含まれます)
追加/削除の判別については、既存の投稿と比較して判断しなければいけません。

値は、statusオブジェクトに追加されたemoji_reactions配列のうちの1つと同じフォーマットで設定されます。(中身は本ページの少し上に書いてあります)

通知に追加されたイベント

emoji_reaction通知が追加されています。この通知は自分の投稿に絵文字リアクションが付けられた時に発生します。emoji_reactionという独自プロパティを持ち、そのフォーマットはcustom_emojiオブジェクトと同一です。カスタム絵文字でない場合は、nameプロパティのみが設定されたJSONオブジェクトになります。

【23/6追記】Fedibird対応アプリとの互換性のため、countmeプロパティを設定していますが、いずれも仮の値が設定されており実態に即しません

投稿への絵文字リアクションを操作するAPI

CREATE(投稿に絵文字リアクションをつける)

以下のいずれか

PUT /api/v1/statuses/:status_id/emoji_reactions/:emoji  [Fedibird互換]
POST /api/v1/statuses/:status_id/emoji_reactions  [POST parameter: emoji]
パラメータ名 説明
status_id 110188477233157880 対象投稿のID
emoji 😀igyo[email protected] つける絵文字。カスタム絵文字の場合は名前とドメイン名を設定。ただしkmyblueローカル絵文字の場合、ドメイン名は指定してはいけない

戻り値:今回付けた絵文字リアクションが付加されたstatusオブジェクト

1つのアカウントで1つの投稿につけられる絵文字リアクションの最大数に達しているためこれ以上絵文字リアクションをつけることができない場合、422ステータスコードが返されます。ただし他のエラーが発生しても422が返されることがあります。

READ(投稿の絵文字リアクション一覧を取得する)

GET /api/v1/statuses/:status_id/emoji_reactioned_by [Fedibird互換]
パラメータ名 説明
status_id 110188477233157880 対象投稿のID

戻り値:下記オブジェクトの配列

{
  "id": "(文字列)内部レコードのID。Reactなどで1行ごとにユニークなIDが必要な場合に使用",
  "name": "(文字列)😀/igyoのいずれかのフォーマットが入る。ドメイン名は含まれない",
  "url": "(文字列|undefined)絵文字のURL",
  "static_url": "(文字列|undefined)アニメーションする絵文字の場合、アニメーションしない画像のURL",
  "domain": "(文字列|undefined|null)リモートからの絵文字の場合、カスタム絵文字のドメイン",
  "account": "(オブジェクト)絵文字を付けたアカウント情報"
}

favourited_byなどと異なり、単純なアカウントの配列ではなく絵文字の情報が付加されることに注意してください。また、同じアカウントが複数含まれる場合があることに注意してください。

DELETE(投稿の絵文字リアクションを個別に削除する)

以下のいずれか

DELETE /api/v1/statuses/:status_id/emoji_reactions/:emoji  [Fedibird互換]
POST /api/v1/statuses/:status_id/emoji_unreaction  [POST parameter: emoji]
パラメータ名 説明
status_id 110188477233157880 対象投稿のID
emoji 😀igyo[email protected] つける絵文字。カスタム絵文字の場合は名前とドメイン名を設定。ただしkmyblueローカル絵文字の場合、ドメイン名は指定してはいけない

戻り値:statusオブジェクト

ドメイン名を指定しても、指定した名前のカスタム絵文字全て(例:[email protected][email protected]があれば両方)を削除します。ドメイン名を指定しないことも可能です。

DELETE BULK(投稿の絵文字リアクションを全て削除する)

POST /api/v1/statuses/:status_id/emoji_unreaction  [Fedibird互換]
パラメータ名 説明
status_id 110188477233157880 対象投稿のID

自分のアカウントがつけた絵文字リアクションを取得するAPI

GET /api/v1/emoji_reactions  [Fedibird互換]

戻り値:自分が絵文字リアクションを付けたstatus配列