購読許可AP仕様 - kmycode/mastodon GitHub Wiki

以下は、ActivityPub(以降AP)受信側の購読機能にNoteを掲載していいかをAP発信側が指定するプロパティについて説明します。

購読機能の定義

ここで購読機能は以下と定義します。

[被購読者への通知]
フォロー機能を介さず、かつ「被購読者に通知が行かない/被購読者が任意のタイミングで状況確認ができない」のいずれかまたは両方を満たすもの

[機能]
特定条件を満たした相手の投稿を読むためのタイムラインAPIまたはストリーミングAPIまたはその両方が提供されているもの

[購読可能な範囲]
公開範囲が「公開」であり、連合タイムラインに掲載される投稿

ただし上記定義に従う購読機能はあくまで連合タイムラインの絞り込み機能であり、特定のアカウントのピックアップが容易であるかは曖昧です。購読される投稿を送信するサーバー管理者側が任意にその範囲を指定し、ドメインブロックなど必要な措置を行うことを想定すべきです。
例えば受信側サーバー(購読機能を実装するサーバー)がアカウントを指定して絞り込みを行う購読機能のみにsubscribableByを適用しても、単にドメインを指定して絞り込みを行う購読において人数の著しく少ないサーバーが指定された時、事実上前者の購読機能になる場合があります。それを考慮するかは、送信側・受信側サーバー管理者の判断に依存します。

JsonLd Context

{
  "@context": {
    "kmyblue": "http://kmy.blue/ns#",
    "subscribableBy": {
      "@id": "kmyblue:subscribableBy",
      "@type": "@id"
    }
  }
}

Actor追加プロパティ

{
  "subscribableBy": "(配列)購読を許可するかの値"
}

subscribableBy

明示的に購読を許可する場合、配列の任意の位置に「https://www.w3.org/ns/activitystreams#Public」を設定する
  "subscribableBy": ["https://www.w3.org/ns/activitystreams#Public"]

フォロワーのみに明示的に購読を許可する場合、配列の任意の位置にアカウントのフォロワー一覧のURLを設定する
  "subscribableBy": ["https://kmy.blue/users/askyq/followers"]

明示的に購読を許可しない場合、配列に「https://www.w3.org/ns/activitystreams#Public」を含めない
  "subscribableBy": []

受信側サーバーの判断に任せる場合、Actorに「subscribableBy」プロパティを含めない、もしくはnullを設定する

送信側サーバーには3つの選択肢があります。また、送信側サーバーがとった選択肢を、受信側サーバーは自由に公開することができます。

明示的に購読を許可する場合 - 受信側サーバーは自身の購読機能にこのActorNoteを掲載することができます。ただしここにおいて、購読に掲載するNoteの公開範囲は「公開」でなければいけません。

明示的に購読を許可しない場合 - 受信側サーバーは自身の購読機能にこのActorNoteを掲載することはできません。ただし受信側サーバーは、実際に配信されないにかかわらず、いつでもこのActorを購読リストに登録することができます。

このプロパティを明示的に記述しない場合 - 受信側サーバーが自身の購読機能にこのActorNoteを掲載するかは、受信側サーバーの判断に一任されます。ただしここにおいて、購読に掲載するNoteの公開範囲は「公開」でなければいけません。