ActivityPubメモ その1
ActivityPubはその人が受信するためのInboxと、その人が作った投稿などを発出するためのOutboxがある
外側に発出する場合はInboxはPOST、Outboxは主にGETのHTTPメソッドを使う
自分がOutboxにPOSTで投稿、InboxにGETして投稿を受信などがあるが、実際に見たケースがない・・・。
JSON-LDを介して拡張できる。←解説してるとながくなりそうなので割愛 クライアントからサーバーへのプロトコル→ソーシャルAPI ←あんま見ない
サーバー間のプロトコル→フェデレーションプロトコル ←MastodonやMisskeyなどはこれを用いてる
これらのプロトコルのいずれかが実装されるともう一方をサポートするための追加の労力が軽減されるように設計されている
※例えばIDのURLが有効であるかとか、発信元は正しいか
検証の方法は正式に定められていない。ただ、MastodonはHTTP Signatureを使っているようだ(それに従ってそれの検証方法が多く用いられている可能性もある)
ActivityPubのすべてのオブジェクトには必ず、idとTypeがある
アクティビティを取得するためにオブジェクトのプロパティに対してidのURLを逆参照される場合がある
application/ld+json; profile="https://www.w3.org/ns/activitystreams"か
application/activity+jsonがAcceptヘッダーに入っている必要がある
上記の要件に準拠してないリクエストの場合は他の動作を実装しても問題ない。(例えばそのアクティビティのidでブラウザで投稿を読む場合、上記のヘッダーが含まれていない場合はユーザーが視認しやすい形式にするなど)
また、認証システム(HTTP Signatureなど)を独自に実装することが許されており、オブジェクトの存在がプライベートの場合はHTTP 403やHTTP 404を返すことができる
idがURIの形式であるかを検証する必要がある
有効なURIである場合は直接使用し、そうでない場合は有効なURIにできるかを試す(例えばexample.com/alice/の形式だったらプロトコル、httpsなどをつける)
それでも有効なURIでない場合は無効とみなす