ログインユーザーのみ閲覧可能投稿AP仕様 - kmycode/mastodon GitHub Wiki

以下は、ActivityPub(以降AP)のNote(投稿)をログインユーザーのみが閲覧可能であるかを指定するプロパティについて説明します。

以下の仕様は試験的なものです。破壊的変更はなるべくしませんが、仕様・概念こと削除する場合があります。

ログインユーザーの定義

ここでログインユーザーは以下と定義します。

[新規登録/復帰可能である]
ユーザーは特定の手順に従い新規登録を行い、かつ他のデバイスからも自由にそのアカウントにアクセス可能である必要があります

[アカウントは自動発行されない]
ある特定のページにアクセスするだけでアカウントが自動発行されない必要があります
ユーザーが手動で新規作成ボタンをクリックする操作を行うことでの作成を前提としています
これは例えば、特に新規登録申請フォームなどでの手続きをへていないのに、当該ページを開いただけで自動生成されたID・パスワードが表示され、以降同情報でアクセスできるケースを想定しています
クッキーを使用した疑似ユーザーシステムなどもこれに含まれます

[アカウントは不特定多数に共有されない]
1アカウントを管理・利用できるのは1人または特定多数だけであるという前提にたちます

[ブロック機能の影響を受ける]
システムはユーザーが特定アカウントにブロックされているかの情報を常に収集し、ユーザーに与えるコンテンツから当該情報を隠蔽する必要があります

Note変更対象プロパティ

{
  "to": "(文字列配列)TO",
  "cc": "(文字列配列)CC"
}

to/cc

ログインしたユーザーのみ閲覧可能、かつ「公開」と同様に扱う場合、toに「kmyblue:LoginOnly」を含める
  "to": [ ... "kmyblue:LoginOnly" ]

ログインしたユーザーのみ閲覧可能、かつ「未収載」と同様に扱う場合、ccに「kmyblue:LoginOnly」を含める
  "cc": [ ... "kmyblue:LoginOnly" ]

ログインしたユーザー以外にも閲覧可能である場合、上記の値を含めない

投稿の公開範囲判定において、本来のtoccよりも上記の値が優先となりますが、参考にすべき情報がある場合は参考にして構いません。

このkmyblue:LoginOnly投稿の表示に対応していないサーバーのために、送信側はtoccを、フォロワーのみ閲覧可能であるかのように偽装する必要があります。そのためkmyblue:LoginOnlyの位置で別途公開範囲を指定しています。なお上記2プロパティ両方に指定されている場合、送信側サーバーは、公開範囲の広い方(公開)が採用されることを想定してください。
kmyblue:LoginOnlyに対応するサーバーはログインユーザーに限って上記仕様の通りに投稿の公開範囲を定める必要があります。ただし上記仕様の一部しか対応しない場合(たとえばtoには対応、ccには対応しない)、対応していないkmyblue:LoginOnlyの値が設定された投稿は常にそれよりも狭い公開範囲(例えば未収載投稿のみ対応しているサーバーでは、公開投稿は未収載投稿にする)、もしくは未対応サーバーと同等の対応(kmyblue:LoginOnlyを除いたtoccの値をそのまま受け入れる)にする必要があります。

従来のバージョンのkmyblueではkmyblue:LoginOnlyの代わりにLoginUseras:LoginOnlyが使われていましたが、これらは将来のバージョンで削除する予定です。