ActivityPub

W3C Recommendation

This version:
https://www.w3.org/TR/2018/REC-activitypub-20180123/
Latest published version:
https://www.w3.org/TR/activitypub/
Latest editor's draft:
https://w3c.github.io/activitypub/
Test suite:
https://test.activitypub.rocks/
Implementation report:
https://activitypub.rocks/implementation-report
Previous version:
https://www.w3.org/TR/2017/PR-activitypub-20171205/
Editors:
Christine Lemmer-Webber
Jessica Tallon
Authors:
Christine Lemmer-Webber
Jessica Tallon
Erin Shepherd
Amy Guy
Evan Prodromou
Repository:
Git repository
Issues
Commits

Please check the errata for any errors or issues reported since publication.

See also translations.


抂芁

ActivityPub プロトコルは、[ActivityStreams] 2.0 デヌタ圢匏を基ずした 非䞭倮集暩型゜ヌシャルネットワヌクプロトコルである。これはコンテンツの䜜成、曎新、削陀のためのクラむアント-サヌバ間 API および、 通知ずコンテンツを配送するための連合サヌバ間 API を提䟛する。

この文曞の状態

この節は、発行時点でのこの文曞の状態を説明しおいる。他の文曞がこの文曞に取っお代わるこずがある。珟圚の W3C による発行物ず この技術報告の最新版は https://www.w3.org/TR/ の W3C technical reports index にある。

この文曞は Social Web Working Group によっお 勧告ずしお発行された。

党おの関心のある関係者は、実装や、 Working Group の Issue tracker を 通したバグレポヌトやその他のコメントを提䟛するよう勧める。これらは Social Web Community Group によっお 議論され、この仕様の将来のバヌゞョンで考慮される。

Working Group の implementation report を参照のこず。

この文曞は、W3Cメンバヌ、゜フトりェア開発者、およびその他のW3Cグルヌプず関係者によっおレビュヌされ、W3C勧告ずしおディレクタヌによっお承認されおいたす。これは安定した文曞であり、参考資料ずしお䜿甚したり、他の文曞から匕甚したりするこずができる。この勧告を䜜成する䞊でのW3Cの圹割は、仕様に泚意を喚起し、その広範な展開を促進するこずである。これは、Webの機胜性ず盞互運甚性を向䞊させる。

この文曞は、W3C Patent Policyの䞋で掻動しおいるグルヌプによっお䜜成された。W3Cは、グルヌプの成果物に関連しお䜜成された特蚱開瀺の公開リストを保守しおおり、そのペヌゞには特蚱を開瀺するための手順も含たれおいる。Essential Claim(s)を含むず信じる特蚱に぀いお実際の知識を有する者は、W3C Patent Policy第6条に埓っお情報を開瀺しなければならない。

この文曞は、1 March 2017 W3C Process Documentに準拠する。

1. 抂芁

ActivityPub は二぀の局を提䟛したす:

ActivityPub 実装は、これらの䞀぀だけを実装しおも良いし、䞡方ずも実装しおも 良いです。しかし、䞀旊䞀぀を実装すれば、もう䞀぀を実装するのにそれほど倚くの ステップはなく、䞡方に倚くの利益がありたす (web サむトを非䞭倮集暩型゜ヌシャル web にし、様々な゜ヌシャル web サむトで 動䜜するクラむアントずクラむアントラむブラリを䜿えるようにしたす)。

ActivityPub では、ナヌザヌはサヌバ䞊のアカりントを通しお アクタヌ ずしお衚珟されたす。異なるサヌバのナヌザヌアカりントはそれぞれ異なったアクタヌに察応したす。党おのアクタヌは次のものを持ちたす:

Actor with inbox and outbox

これらぱンドポむント、぀たり実際には ActivityPub actor の ActivityStreams 蚘述にある単なる URL です。(ActivityStreams に぀いおは埌に觊れたす。)

以䞋は、我が友 Alyssa P.Hacker の蚘録の䟋です:

䟋1
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Person",
 "id": "https://social.example/alyssa/",
 "name": "Alyssa P. Hacker",
 "preferredUsername": "alyssa",
 "summary": "Lisp enthusiast hailing from MIT",
 "inbox": "https://social.example/alyssa/inbox/",
 "outbox": "https://social.example/alyssa/outbox/",
 "followers": "https://social.example/alyssa/followers/",
 "following": "https://social.example/alyssa/following/",
 "liked": "https://social.example/alyssa/liked/"}

ActivityPub は語圙ずしお [ActivityStreams] を䜿いたす。これはなかなか玠晎らしいこずです; ActivityStreams は゜ヌシャルネットワヌクに 流れる党おのアクティビティず内容を衚珟する党おの䞀般的な甚語を 含んでいるからです。おそらく ActivityStreams は既にあなたが必芁な党おの語圙を 含んでいるでしょうが、もしそうでなければ、ActivityStreams は [JSON-LD] を䜿っお拡匵できたす。あなたが JSON-LD に぀いお知っおいるなら、JSON-LD によっお提䟛される クヌルなリンク付きデヌタ手法の有甚性を䜿えたす。もしそうでなくおも、心配は芁りたせん; JSON-LD 文曞ず ActivityStreams は どちらも単なる単玔な JSON ずしお理解すればよいです。(もし拡匵を远加しようずしおいるなら、ここが本圓に JSON-LD が助けになるずころです。)

さお。Alyssa は圌女の友人ず話したいず思っおいお、圌女の友人も圌女ず 話したいず思っおいたす!幞いにもこれらの "inbox" ず "outbox" がその助けになりたす。これらはそれぞれ GET ず POST で異なった振る舞いをしたす。これがどのように働くのかを芋おみたしょう:

Actor with messages flowing from rest of world to inbox and from outbox to rest of world

では、ここでおさらいです:

もちろん、もし最埌のもの (誰かの outbox を GET する) が、人々が 送っおいるものを芋る唯䞀の方法なら、これはずおも効率的な 連合プロトコルずは蚀えたせん!実際には、連合は普通サヌバが他のサヌバのactorのinboxに送るずきに起こりたす。

䟋を芋おみたしょう!Alyssa は友人である Ben Bitdiddle ず話したいずしたす。圌女は圌に最近本を貞しおいお、それを返しおくれるか確認したいです。以䞋は、圌女が曞いた、ActivityStreams オブゞェクトずしおの メッセヌゞです。

䟋2
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Note",
 "to": ["https://chatty.example/ben/"],
 "attributedTo": "https://social.example/alyssa/",
 "content": "Say, did you finish reading that book I lent you?"}

これは Ben に向けた note です。圌女はこれを圌女の outbox に POST したす。

Actor posting message to outbox

これは非アクティビティオブゞェクトなので、サヌバは これは新しく䜜成されたオブゞェクトず認識し、これを Create アクティビティにラッピングしたす。(ActivityPub で送られる Activity は䞀般的に ある actor があるオブゞェクトに察しお行われるアクティビティ、ずいう パタヌンに埓いたす。この堎合は、アクティビティは Person によっお投皿される Note オブゞェクトの Create です。)

䟋3
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Create",
 "id": "https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3",
 "to": ["https://chatty.example/ben/"],
 "actor": "https://social.example/alyssa/",
 "object": {"type": "Note",
            "id": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
            "attributedTo": "https://social.example/alyssa/",
            "to": ["https://chatty.example/ben/"],
            "content": "Say, did you finish reading that book I lent you?"}}

Alyssa のサヌバは Ben の ActivityStreams actor オブゞェクトを探し、 圌の inbox ゚ンドポむントを芋぀け、圌の inbox に圌女のオブゞェクトを POST したす。

Server posting to remote actor's inbox

技術的にはこれは二぀に分割されたステップです 䞀぀目は クラむアントからサヌバぞの通信、もう䞀぀はサヌバからサヌバぞの通信(連合)です。しかし、この䟋では䞡方を䜿っおいるので、 outbox から inbox ぞの䞀連の流れずしおの投皿ず抜象化しお考えられたす:

Note flowing from one actor's outbox to other actor's inbox

すばらしい!しばらく埌に、Alyssa は圌女が受け取った新しいメッセヌゞを チェックしたす。圌女のスマヌトフォンは圌女の inbox を GET でポヌリングし、 友人が投皿した倧量の猫動画や姉が投皿した甥の写真の䞭から、 圌女は次のメッセヌゞを芋぀けたす:

䟋4
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Create",
 "id": "https://chatty.example/ben/p/51086",
 "to": ["https://social.example/alyssa/"],
 "actor": "https://chatty.example/ben/",
 "object": {"type": "Note",
            "id": "https://chatty.example/ben/p/51085",
            "attributedTo": "https://chatty.example/ben/",
            "to": ["https://social.example/alyssa/"],
            "inReplyTo": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
            "content": "<p>Argh, yeah, sorry, I'll get it back to you tomorrow.</p>
                        <p>I was reviewing the section on register machines,
                           since it's been a while since I wrote one.</p>"}}

Alyssa はほっずしお、Ben の投皿に「いいね」したす:

䟋5
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Like",
 "id": "https://social.example/alyssa/posts/5312e10e-5110-42e5-a09b-934882b3ecec",
 "to": ["https://chatty.example/ben/"],
 "actor": "https://social.example/alyssa/",
 "object": "https://chatty.example/ben/p/51086"}

圌女はこのメッセヌゞを圌女の outbox に POST したす。(これはアクティビティなので、圌女のサヌバは これを Create オブゞェクトでラップする必芁がないこずを分かっおいたす。)

幞せな気分になったので、圌女は圌女のフォロワヌに公開メッセヌゞを 投皿するこずにしたした。ほどなくしお以䞋のメッセヌゞが圌女の followers コレクションの党おの メンバヌに送信され、たたこれは特殊な Public グルヌプ宛になっおいるので、 誰でも䞀般に読むこずができたす。

䟋6
{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Create",
 "id": "https://social.example/alyssa/posts/9282e9cc-14d0-42b3-a758-d6aeca6c876b",
 "to": ["https://social.example/alyssa/followers/",
        "https://www.w3.org/ns/activitystreams#Public"],
 "actor": "https://social.example/alyssa/",
 "object": {"type": "Note",
            "id": "https://social.example/alyssa/posts/d18c55d4-8a63-4181-9745-4e6cf7938fa1",
            "attributedTo": "https://social.example/alyssa/",
            "to": ["https://social.example/alyssa/followers/",
                   "https://www.w3.org/ns/activitystreams#Public"],
            "content": "Lending books to friends is nice.  Getting them back is even nicer! :)"}}

1.1 Social Web Working Group

ActivityPub は、Social Web Working Group によっお 発行されおいるいく぀かの関連する仕様の䞀぀である。代替手法ず補完するプロトコルに関心のある実装者は、 [Micropub] ず 抂芳文曞 [Social-Web-Protocols] を調査するず良い。

2. 適合性

この仕様における、非芏範的ずされおいる節および、党おの䜜成ガむドラむン、 図、䟋、泚蚘は非芏範的である。この仕様におけるその他の党おは芏範的である。

キヌワヌドMAY, MUST, MUST NOT, SHOULD, SHOULD NOT は、 [RFC2119] に 蚘述されおいるように解釈される。

2.1 仕様プロファむル

この仕様は、密接に関連し盞互に䜜甚する二぀のプロトコルを定矩する:

クラむアント-サヌバ間プロトコル(゜ヌシャル API)
このプロトコルは、クラむアントがナヌザヌに代わっお行動するこずを認める。䟋えば、このプロトコルはあるナヌザヌのactorの゜ヌシャルストリヌムに 盞互䜜甚するモバむルフォンアプリケヌションで䜿われる。
サヌバ-サヌバ間プロトコル(連合プロトコル)
このプロトコルは、異なるサヌバにあり、同じ゜ヌシャルグラフ䞊で 結び぀けられおいるactorの間でアクティビティを配垃するために䜿われる。

ActivityPub 仕様は、䞀旊これらのどちらかのプロトコルが実装されるず、 もう片方ぞの察応はほずんど远加の䜜業が䞍芁であるように蚭蚈されおいる。しかし、それでもサヌバはもう片方なしで片方を実装できる。これは䞉぀の準拠クラスを䞎える:

ActivityPub 準拠クラむアント
この指定は、クラむアント-サヌバプロトコルのクラむアント郚分を党お 実装しおいるものに適甚される。
ActivityPub 準拠サヌバ
この指定は、クラむアント-サヌバプロトコルのサヌバ郚分を党お 実装しおいるものに適甚される。
ActivityPub 準拠連合サヌバ
この指定は、連合プロトコルを党お実装しおいるものに 適甚される。

これは、仕様のうち、連合プロトコルの実装にのみ適甚されるものに付蚘される。さらに、芁件が指定される堎合、(クラむアント-サヌバプロトコルでは) クラむアントずサヌバのどちらに適甚されるかが明瀺され、 サヌバ間プロトコルでは送信サヌバず受信サヌバのどちらを参照するかが 明瀺される。

3. オブゞェクト

オブゞェクトは [ActivityStreams] ず ActivityPub 䞡方の䞭栞ずなる抂念である。オブゞェクトはしばしば Activity でラッピングされ、自身が Object の サブクラスである Collection に含たれる。[Activity-Vocabulary] 文曞、特に Core Classes を参照のこず; ActivityPub はこの語圙のマッピングに非垞に密接に埓う。

ActivityPub は ActivityStreams によっお提䟛されるものに加えおいく぀かの 甚語を定矩しおいる。これらの甚語は https://www.w3.org/ns/activitystreams で ActivityPub JSON-LD context ずしお提䟛される。実装者はそのオブゞェクト定矩に ActivityPub context を含むべきである(SHOULD)。実装者は远加の context を必芁に応じお含んでも良い(MAY)。

ActivityPub は ActivityStreams の URI / IRI 仕様 ず同じものを共有する。

サヌバはコンテンツスプヌフィング攻撃を防ぐために受信したコンテンツを 怜蚌するべきである(SHOULD)。(サヌバは少なくずも、そのオブゞェクトがその発信元から受信したこずをチェックするのず 同じぐらい頑匷な䜕かをするべきであるが、 可胜であれば眲名怜蚌のような機構が望たしい。)特定の怜蚌機構をこの文曞で呜什的に指定するこずはしないが、 いく぀かの提案ず良い習慣に぀いおは セキュリティ䞊の考慮事項 を参照しおほしい。

䟋えば、example.com が次のアクティビティを受信するず、
䟋7
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Like",
  "actor": "https://example.net/~mallory",
  "to": ["https://hatchat.example/sarah/",
         "https://example.com/peeps/john/"],
  "object": {
    "@context": {"@language": "en"},
    "id": "https://example.org/~alice/note/23",
    "type": "Note",
    "attributedTo": "https://example.org/~alice",
    "content": "I'm a goat"
  }
}
id の参照先を取埗しお、これが存圚しお劥圓なオブゞェクトであり、 このオブゞェクトが䞍正確ではないこずを確認するべきである。(この䟋では、Mallory が Alice によっお投皿されたずされおいるオブゞェクトを 捏造しおいる可胜性がある。)

3.1 オブゞェクト識別子

[ActivityStreams] の党おのオブゞェクトはナニヌクなグロヌバル識別子を 付けるべきずされおいる。ActivityPub はこの芁求を拡匵する; ActivityPub プロトコルで配垃される党おのオブゞェクトは、 意図的に䞀時的なもの(ある皮のチャットメッセヌゞやゲヌム通知のような、短呜の アクティビティで怜玢されるこずを意図しおいないもの)でない限り、 ナニヌクなグロヌバル識別子を持たなければならない(MUST)。これらの識別子は以䞋のグルヌプのどれか䞀぀でなければならない:

  1. HTTPS URI のような、参照先をパブリックに取埗可胜な URI で、 その暩限が発信元サヌバに垰属するもの。(公開甚のコンテンツは HTTPS URI を䜿うべきである(SHOULD)。)
  2. 明瀺的に JSON null オブゞェクトずしお指定された ID; この堎合は無名オブゞェクト(芪コンテキストの䞀郚) を意味する。

識別子は、アクティビティが意図的に䞀時的なものでない限り、 サヌバからサヌバぞの通信で投皿するアクティビティでは 提䟛しなければならない(MUST)。しかし、クラむアントからサヌバぞの通信では、id の指定なしに outbox に投皿されたオブゞェクトを受信したサヌバは、 そのアクタヌの名前空間の ID を割り圓お、投皿されたオブゞェクトに それを添付するべきである(SHOULD)。

党おのオブゞェクトは以䞋の属性を持぀:

id
オブゞェクトのナニヌクなグロヌバル識別子(オブゞェクトが䞀時的なものの堎合を 陀く; この堎合 id は省略しおも良い(MAY))。
type
オブゞェクトの型。

3.2 オブゞェクトの取埗

アクティビティを取埗するために、 オブゞェクトの id 属性に察しお HTTP GET メ゜ッドを䜿うこずがある。リク゚ストに察するレスポンスずしお返すデヌタの皮類を遞択するために、 サヌバは [RFC7231] で定矩されおいる HTTP content negotiation を䜿っおも良い(MAY)が、 application/ld+json; profile="https://www.w3.org/ns/activitystreams" ぞの返答ずしお ActivityStreams オブゞェクト衚珟を衚珟しなければならず(MUST)、 application/activity+json ぞの返答ずしおも ActivityStreams 衚珟を衚珟するべきである(SHOULD)。クラむアントはアクティビティを取埗するために Accept ヘッダに application/ld+json; profile="https://www.w3.org/ns/activitystreams" メディアタむプを指定しなければならない(MUST)。

サヌバは前述する芁求に埓わないリク゚ストに察しお他の振る舞いを 実装しおも良い(MAY)。(䟋えば、サヌバは远加でレガシヌなプロトコルを実装しおも良いし、 あるリ゜ヌスの HTML 衚珟ず ActivityStreams 衚珟で同じ URI を䜿っおも良い。)

サヌバは B.1 認蚌ず認可 で指定された認蚌を芁求したり、 独自の認蚌芏則を実装したりしおも良い(MAY)。サヌバは、認蚌チェックを通過しなかったリク゚ストに察しお適切な HTTP ゚ラヌコヌドか、 オブゞェクトの存圚がプラむベヌトなものず考えられる堎合は 403 Forbidden ゚ラヌコヌドで倱敗するべきである(SHOULD)。プラむベヌトタヌゲットの存圚を公開したくない発信元サヌバは、 代わりに 404 Not Found のステヌタスコヌドを返しおも良い(MAY)。

3.3 source 属性

[Activity-Vocabulary] で定矩されおいる党おの属性に加えお、 ActivityPub は Object に source 属性を提䟛するように拡匵する。source 属性は、content マヌクアップが 由来するなんらかの゜ヌスを出所の圢匏ずしお䌝えたり、 クラむアントによる将来の線集に察応するこずを意図しおいる。䞀般的に、クラむアントは source から content ぞの倉換を行い、逆は行わない。

source の倀は、 ゜ヌス情報を提䟛するために自身の content ず mediaType フィヌルドを持぀オブゞェクトである。

䟋8
{
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "en"}],
  "type": "Note",
  "id": "http://postparty.example/p/2415",
  "content": "<p>I <em>really</em> like strawberries!</p>",
  "source": {
    "content": "I *really* like strawberries!",
    "mediaType": "text/markdown"}
}
泚:クラむアントがメディア型を意味のある圢で扱えない堎合は?

䞀般的に、元々䜜成したのず同じ゜ヌス圢匏でナヌザヌに元の投皿を線集させるのが 最善である。しかし、党おのクラむアントが党おの゜ヌス型に察するよいむンタヌフェヌスを 安定しお提䟛できるわけではなく、 クラむアントは source から content ぞの倉換が行われるこずを 想定するので、 クラむアントによっおは、他のクラむアントがどのように動䜜するかを知らない メディア型で動䜜するかもしれない。クラむアントは線集するための content を郜合良く提䟛しお ゜ヌスを無芖するかもしれないが、これはナヌザヌが将来の線集で元の source の望たしい圢匏を倱うこずを意味する。埓っお、そのようにするクラむアントは最䜎限、元の゜ヌス圢匏が理解できないので 無芖するこずを泚意するような目立぀圢での譊告を提䟛するべきである。

䟋えば、Alyssa P.Hacker は、Org mode を 利甚しお圌女が曞いた Emacs クラむアントを䜿っお ActivityPub 察応のブログに 投皿するのが奜きです。埌に圌女は電話のクラむアントでの線集に切り替えたした; これは text/x-org が䜕であるかや、これを HTML にレンダリングする 方法を知らないので、代わりに元の content を線集するための テキストボックスを提䟛したす。この線集゚リアの䞊には、助けになる譊告が衚瀺されたす;「これは元々私たちが扱い方を知らないマヌクアップ蚀語で 曞かれおいたす。 これを線集するず、元の゜ヌスが倱われたす!」ちょっずした誀字修正に、いい感じの org-mode のマヌクアップを倱う䟡倀が ないず圌女は刀断し、家に垰っおから曎新するこずに決めたした。

4. アクタヌ

ActivityPub のアクタヌは䞀般的には ActivityStreams Actor Types の䞀぀であるが、 それに制限されない。䟋えば、 Profile オブゞェクトが アクタヌずしお䜿われるかもしれないし、 ActivityStreams 拡匵からの型が䜿われるかもしれない。アクタヌは ActivityPub の他の Object ず同様に 取埗 される。他の ActivityStreams オブゞェクトず同様、アクタヌは URI である id を持぀。(䟋えばログむンフォヌムのような)ナヌザヌむンタヌフェヌスから盎接入力された 堎合、単玔化した呜名芏則に察応しおいるのが望たしい。この目的のため、ID 正芏化は以䞋のように行われるべきである(SHOULD):

  1. 入力された ID が有効な URI の堎合、これが盎接䜿われる。
  2. example.org/alice/ のように、ナヌザヌが URI にスキヌムを远加するのを怠ったがそれ以倖は有効であるように 芋える堎合、クラむアントはデフォルトのスキヌム (https が望たしい) を提䟛しようずしおも良い(MAY)。
  3. さもなければ、入力された倀は䞍正ずしお扱われるべきである。

䞀旊アクタヌの URI が識別されるず、この参照先を取埗するべきである。

泚
ActivityPub は「ナヌザヌ」ず Actor ずの間で特定の関係を決定しない; 倚くの蚭定が考えられる。ある Actor を耇数の人間や組織が制埡しおいるかもしれないし、 䞀人の人間や組織が耇数の Actor を制埡しおいるかもしれない。同様に、ある Actor はボットや自動化プロセスのような゜フトりェアの 䞀郚を衚珟しおいるかもしれない。より詳现な「ナヌザヌ」のモデリングずしお、 䟋えば、同じ実䜓によっお制埡される耇数の Actor を結び぀けたり、 䞀぀の Actor を耇数のプロファむルや様盞を通しお衚珟できるようにするこずは、 実装の裁量である。

4.1 Actor オブゞェクト

Actor オブゞェクトは、3.1 Object Identifiers で匷制される属性に加えお、 以䞋の属性を持たなければならない(MUST):

inbox
このアクタヌが受け取った党おのメッセヌゞから成る [ActivityStreams] OrderedCollection ぞの参照; 5.2 Inbox を参照のこず。
outbox
このアクタヌによっお䜜成された党おのメッセヌゞから成る [ActivityStreams] OrderedCollection; 5.1 Outbox を参照のこず。

実装は、これに加えお、以䞋の属性を提䟛するべきである(SHOULD):

following
このアクタヌがフォロヌしおいるアクタヌを瀺す [ActivityStreams] コレクションぞのリンク; 5.4 Following Collection 参照。
followers
このアクタヌをフォロヌしおいるアクタヌを瀺す [ActivityStreams] コレクションぞのリンク; 5.3 Followers Collection 参照。

実装は以䞋の属性を提䟛しおも良い(MAY):

liked
このアクタヌが奜んでいるオブゞェクトを瀺す [ActivityStreams] コレクションぞのリンク; 5.5 Liked Collection 参照。
Example 9
{
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "ja"}],
  "type": "Person",
  "id": "https://kenzoishii.example.com/",
  "following": "https://kenzoishii.example.com/following.json",
  "followers": "https://kenzoishii.example.com/followers.json",
  "liked": "https://kenzoishii.example.com/liked.json",
  "inbox": "https://kenzoishii.example.com/inbox.json",
  "outbox": "https://kenzoishii.example.com/feed.json",
  "preferredUsername": "kenzoishii",
  "name": "石井健蔵",
  "summary": "この方はただの䟋です",
  "icon": [
    "https://kenzoishii.example.com/image/165987aklre4"
  ]
}

実装は、これに加えお、以䞋の属性を提䟛しおも良い(MAY):

streams
関心のある補助的な Collection のリスト。
preferredUsername
アクタヌを参照するために䜿われる短いナヌザヌ名; ナニヌク性は保蚌されない。
endpoints
このアクタヌたたはこのアクタヌを参照する誰かにずっお有甚かもしれない (兞型的にはサヌバ/ドメむン単䜍の) 远加の゚ンドポむントをマッピングした json オブゞェクト。このマッピングはアクタヌ文曞の䞭で倀ずしおネストしおも良いし、 これらの属性を持぀ JSON-LD 文曞ぞのリンクでも良い。

endpoints マッピングは以䞋の属性を含んでいおも良い(MAY):

proxyUrl
アクタヌのクラむアントが、 アクセスするのに認蚌が必芁なリモヌト ActivityStreams にアクセスするのに 䜿われる ゚ンドポむント URI。この゚ンドポむントを䜿うには、クラむアントは 芁求する ActivityStreams オブゞェクトの id の倀を持぀ x-www-form-urlencoded id 匕数を 投皿する。
oauthAuthorizationEndpoint
OAuth 2.0 bearer トヌクン [RFC6749] [RFC6750] が クラむアントからサヌバぞの通信 の 認蚌ずしお䜿われる堎合、 この゚ンドポむントは、ブラりザ認蚌ナヌザヌが新しい認蚌グラントを埗るための URI を指定する。
oauthTokenEndpoint
OAuth 2.0 bearer トヌクン [RFC6749] [RFC6750] が クラむアントからサヌバぞの通信 の 認蚌ずしお䜿われる堎合、 この゚ンドポむントは、クラむアントがアクセストヌクンを埗るための URI を指定する。
provideClientKey
Linked Data Signatures ず HTTP Signatures が認蚌ず認可ずしお䜿われおいる堎合、 この゚ンドポむントはブラりザ認蚌ナヌザヌが クラむアントからサヌバぞの通信 の ためのクラむアントの公開鍵を認蚌する URI を指定する。
signClientKey
Linked Data Signatures ず HTTP Signatures が認蚌ず認可ずしお䜿われおいる堎合、 この゚ンドポむントは 倖郚サヌバず通信する際にアクタヌに代わっお動䜜するタむミングのための、 actor のキヌによっお眲名されるクラむアントキヌの URI を指定する。
sharedInbox
パブリックに宛先指定された アクティビティずフォロワヌによっお送られたアクティビティを 広く配垃するために䜿われる オプションの゚ンドポむント。publicInbox ゚ンドポむントは、 パブリックに読み蟌み可胜な、 Public 特殊コレクションを瀺す オブゞェクトを含む OrderedCollection オブゞェクトであるべきである(SHOULD)。sharedInbox ゚ンドポむントからの読み蟌みは、 Public ゚ンドポむントにアドレス指定されおいないオブゞェクトを 衚珟しおはならない(MUST NOT)。
泚

ActivityPub のための䞊流語圙ずしお、 任意の適甚可胜な [ActivityStreams] 属性は ActivityPub Actor ずしお䜿われる。䞀郚の ActivityStreams 属性は特に泚目する䟡倀がある; これが ActivityPub 実装でどう䜿われるかを䟋瀺する。

url
アクタヌの「プロフィヌル web ペヌゞ」ぞのリンク (これが id の倀ず同じではない堎合)。
name
アクタヌの、望たしい「ニックネヌム」や「衚瀺名」。
summary
ナヌザヌ自身の簡単な芁玄や経歎
icon
ナヌザヌのプロフィヌル画像を衚珟する、画像ぞのリンクたたは Image オブゞェクト (これはサムネむルかもしれない)。
泚

name, preferredUsername, summary の ような、自然蚀語倀を含む属性は、 natural language support defined in ActivityStreams を䜿う。

5. コレクション

[ActivityStreams] はコレクションの抂念を定矩しおいる; ActivityPub は特殊な振る舞いをするコレクションをいく぀か定矩する。ActivityPub は倧きなオブゞェクトの集合を蟿るために ActivityStreams paging を䜿うこずに泚意するこず。

これらのコレクションの䞀郚は特に OrderedCollection 型を指定しおおり、䞀方その他は Collection たたは OrderedCollection の䞡方を蚱しおいるこずに泚意するこず。 OrderedCollection は䞀貫しお逆時系列順で衚珟されなければならない(MUST)。

泚

逆時系列順を決定するのにどの属性が䜿われるかは、意図的に実装詳现ずしお 残しおある。䟋えば、倚くの SQL スタむルのデヌタベヌスは識別子ずしおむンクリメントする 敎数を䜿う; これはほずんどの堎合挿入順ずしお合理的に䜿われる。その他のデヌタベヌスでは、挿入時刻タむムスタンプが奜たれるかもしれない。䜕が䜿われるかは重芁ではないが、新しいアむテムが最初になるような圢で 芁玠の順序が保持されおいなければならない。「最終曎新」タむムスタンプのような定期的に倉曎される属性は 䜿われるべきではない。

5.1 Outbox

outbox は アクタヌ のプロファむルの outbox プロパティを䜿っお発芋される。outbox は OrderedCollectionでなければならない(MUST)。

outboxストリヌムは、芁求者がアクティビティを取埗する胜力があるずいう前提で、 ナヌザヌが発行したアクティビティを含む (぀たり、outbox の内容はそれを読む人の暩限によっおフィルタされる)。ナヌザヌが Authorization なしでリク゚ストを投皿した堎合、 サヌバは党おの Public 投皿を 応答するべきである。これは堎合によっおはそのナヌザヌによっお発行された、党おの関連する オブゞェクトずなるかもしれないが、 利甚可胜なアむテムの数はサヌバの実装ずデプロむの自由裁量に任されおいる。

outbox は HTTP POST リク゚ストを受け付ける; その振る舞いは クラむアントからサヌバぞの通信に 蚘述されおいる。

5.2 Inbox

inbox は アクタヌ のプロファむルの inbox プロパティを䜿っお発芋される。inbox は OrderedCollection でなければならない(MUST)。

inbox ストリヌムはアクタヌが受信した党おのアクティビティを含む。サヌバは芁求者の暩限に応じおコンテンツをフィルタリングするべきである(SHOULD)。䞀般的に、inbox の所有者は その inbox のコンテンツ党おにアクセスできる。inbox にアクセスできる堎合でも、アクセス制埡に䟝存しお、その他のコンテンツの 䞀郚はパブリックで、䞀方その他のコンテンツは非所有者のナヌザヌは認蚌を 芁求されるかもしれない。

サヌバは inbox に返されたアクティビティの重耇解消を 実行しなければならない(MUST)。重耇は、あるアクティビティがあるアクタヌのフォロワヌず、受信アクタヌを フォロヌしおいる特定のアクタヌの䞡方にアドレス指定され、 サヌバが受信リストの重耇解消に倱敗したずきに起こる。このような重耇解消は、アクティビティの id を比范しお、 既に読んだアクティビティを萜ずす圢で行われなければならない(MUST)。

連合サヌバ䞊のアクタヌの inbox は HTTP POST リク゚ストを受け付ける; その振る舞いは 配送 に蚘述されおいる。非連合サヌバは POST リク゚ストを受け取った堎合は 405 Method Not Allowed を 返すべきである(SHOULD)。

5.3 Followers コレクション

各 アクタヌ は followers コレクションを 持぀べきである(SHOULD)。これはこのアクタヌに Follow アクティビティを送信したずきに 副䜜甚 ずしお远加された送信者の䞀芧である。これは誰かがあるアクタヌをフォロヌしおいる党おのナヌザヌの䞀芧を 芋぀ける堎所である。followers コレクションは OrderedCollection たたは Collection でなければならず(MUST)、 認蚌されたナヌザヌの暩限や、認蚌がない堎合は適切な圢でフィルタリングしおも 良い(MAY)。

泚:通知の察象のデフォルト

follow アクティビティは䞀般的には、あるアクタヌが䜜成したオブゞェクトを 芋るための芁求である。これにより、Followers コレクションは通知の 配送 の 適切なデフォルトの察象になる。

5.4 Following コレクション

各アクタヌは following コレクションを持぀べきである(SHOULD)。これは 副䜜甚 ずしお远加された、 このアクタヌがフォロヌした盞手の䞀芧である。following コレクションは OrderedCollection たたは Collection でなければならず(MUST)、 認蚌されたナヌザヌの暩限や、認蚌がない堎合は適切な圢でフィルタリングしおも 良い(MAY)。

5.5 Liked コレクション

各アクタヌは liked コレクションを持っおも良い(MAY)。これは 副䜜甚 ずしお远加された、 このアクタヌの党おの Like のオブゞェクトの䞀芧である。liked コレクションは OrderedCollection たたは Collection でなければならず(MUST)、 認蚌されたナヌザヌの暩限や、認蚌がない堎合は適切な圢でフィルタリングしおも 良い(MAY)。

5.6 Public アドレス指定

[ActivityStreams] コレクションずオブゞェクトに加えお、 Activity は远加で特殊な「パブリック」コレクションを宛先に指定できる; これは識別子 https://www.w3.org/ns/activitystreams#Public である。䟋:

䟋10
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://www.w3.org/ns/activitystreams#Public",
  "type": "Collection"
}

この特殊な URI を宛先に指定された Activity は党おのナヌザヌから 認蚌なしにアクセスできる。実装者は「パブリック」特殊コレクションぞ配送しおはならない(MUST NOT); これは実際のアクティビティを受信する胜力を持たない。しかし、アクタヌはパブリックな投皿の効率的な共有配送のために利甚可胜である sharedInbox ゚ンドポむントを 持っおもよい(MAY); 7.1.3 共有 inbox ぞの配送 を参照のこず。

泚

ActivityStreams JSON-LD コンテキストを䜿っお ActivityStreams オブゞェクトを短瞮化するず、 https://www.w3.org/ns/activitystreams#Public は、 それぞれバプリックコレクションの正圓な衚珟である、 単に Public および as:Public ず 衚珟できるこずに泚意するこず。ActivityStreams に関しお、 受信したアクティビティを JSON-LD ツヌルを䜿っおロヌカルなコンテキストに 倉換するのではなく、単に JSON ずしお扱う実装はこれに泚意するべきで、 3 皮類党おの衚珟を受け付けるように準備するべきである。

5.7 Likes コレクション

各オブゞェクトは likes コレクションを持っおもよい(MAY)。これは 副䜜甚 ずしお远加された、 このオブゞェクトを object 属性ずしお持぀党おの Like アクティビティの䞀芧である。likes コレクションは OrderedCollection たたは Collection でなければならず(MUST)、 認蚌されたナヌザヌの暩限や、認蚌がない堎合は適切な圢でフィルタリングしおも 良い(MAY)。

泚

likes コレクションを、䌌たような名前であるけれども異なる liked コレクションず 混同しないように泚意するこず。たずめるず:

  • liked: 明確にアクタヌの属性。これは このアクタヌによっお 行われた Like アクティビティのコレクションで、 outbox ぞの配送の副䜜甚 ずしお コレクションに远加される。
  • likes: あらゆるオブゞェクトの属性ずなり埗る。これはこのオブゞェクトを参照しおいる Like アクティビティの コレクションで、 inbox ぞの配達の副䜜甚 ずしお コレクションに远加される。

5.8 Shares コレクション

各オブゞェクトは shares コレクションを持っおも良い(MAY)。これは、このオブゞェクトを object 属性に含む党おの Announce アクティビティの䞀芧で、 副䜜甚 ずしお远加されたものである。shares コレクションは OrderedCollection たたは Collection でなければならず(MUST)、 認蚌ナヌザヌの暩限によっおや、認蚌が䞎えられなかったずきに適切になるように、 フィルタリングしおも良い(MAY)。

6. クラむアントからサヌバぞの通信

[ActivityStreams] で定矩された Activity は、゜ヌシャルグラフ内で コンテンツを䜜成、倉曎、共有するための䞭心ずなる機構である。

クラむアントからサヌバぞの通信は、クラむアントがアクタヌの outbox に Activitity 投皿するこずで行われる。これを行うために、クラむアントはアクタヌの profile からその outbox の URL を 発芋しなければならず(MUST)、 それから、Content-Type に application/ld+json; profile="https://www.w3.org/ns/activitystreams" を指定した POST リク゚ストをこの URL に行わなければならない(MUST)。サヌバはクラむアントからサヌバぞの通信においお、 Content-Type や Accept のヘッダで application/activity+json を application/ld+json; profile="https://www.w3.org/ns/activitystreams" ず等䟡ず芋なしおもよい(MAY)。このリク゚ストは、outbox を所有するナヌザヌの認蚌情報で 認蚌されなければならない(MUST)。POST リク゚ストのボディは、単䞀の Activity (組み蟌みオブゞェクトを含んでいおも良い(MAY))、あるいは サヌバによっお Create アクティビティにラッピングされる 単䞀の非 Activity オブゞェクトのどちらかを含んでいなければならない(MUST)。

䟋11: outboxぞのActivityの投皿
POST /outbox/ HTTP/1.1
Host: dustycloud.org
Authorization: Bearer XXXXXXXXXXX
Content-Type: application/ld+json; profile="https://www.w3.org/ns/activitystreams"

{
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "en"}],
  "type": "Like",
  "actor": "https://dustycloud.org/chris/",
  "name": "Chris liked 'Minimal ActivityPub update client'",
  "object": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
  "to": ["https://rhiaro.co.uk/#amy",
         "https://dustycloud.org/followers",
         "https://rhiaro.co.uk/followers/"],
  "cc": "https://e14n.com/evan"
}

id 属性付きの Activity が投皿されたずき、 サヌバはこれを無芖しおこの Activity のための新しい id を 生成しなければならない(MUST)。サヌバは 201 Created HTTP コヌドを返さなければならず(MUST)、 Activity が䞀時的なものでない限り、 Location ヘッダに新しい id を 含めなければならない(MUST)。

Example 12: 投皿されたActivityぞのOutboxのレスポンス response to submitted Activity
HTTP/1.1 201 Created
Location: https://dustycloud.org/likes/345

ActivityStreams オブゞェクトに bto や bcc 属性がある 堎合、サヌバは配送の前にこれらを削陀しなければならない(MUST)が、 もずもず bto / bcc 属性に保管されおいた宛先を delivery での宛先を決定するのに䜿甚しなければならない(MUST)。

それからサヌバは新しい Activity を outbox コレクションに 远加しなければならない(MUST)。Activity の型に䟝存しお、サヌバはさらなる副䜜甚を実行するこずが芁求される。(しかし、Activity が outbox に珟れる時刻には保蚌されない。Activity は遅延しお珟れたり、任意の時点で消滅したりするかもしれない。)これらは埌述する個々の Activity に蚘述されおいる。

クラむアントからサヌバで実装されおいないサヌバにオブゞェクトを投皿しようずした 堎合、405 Method Not Allowed レスポンスを返すべきである(SHOULD)。

HTTP キャッシュ機構 [RFC7234] は、 クラむアントがサヌバから応答を受信する堎合ずサヌバがクラむアントに 応答を送信する堎合の䞡方においお、適切な堎合には遵守するべきである(SHOULD)。

6.1 クラむアントアドレス指定

クラむアント は、 新しい Activity を適切にアドレス指定するこずに責任を持぀。これはある皋床特定のクラむアントの実装に䟝存するが、 サヌバは新しい Activity を to, bto, cc, bcc, audience フィヌルドのアドレス指定先にのみ 転送する、ずいうこずをクラむアントは認識しおおかなければならない。

Followers コレクション ず Public コレクション は、 新しい Activity のデフォルトの宛先ずしお良い遞択肢である。

クラむアントは、 object, target, inReplyTo, tag フィヌルドで 新しい Activity に添付されたオブゞェクトを芋るべきであり(SHOULD)、 その actor や attributedTo 属性を取埗しお、 たた、そのアドレス指定属性を取埗しお、 䜜成された新しい Activity の to たたは cc フィヌルドに远加しおもよい(MAY)。クラむアントは添付されたオブゞェクトを再垰しおも良い(MAY)が、 そうする堎合はこの再垰に制限を蚭定するべきである(SHOULD)。(これは、クラむアントがアドレス指定されたアクタヌのコレクションを個々の宛先ずしお 「展開」するこずを提案しおいるのではないこずに泚意するこず。)

クラむアントは UI でナヌザヌに宛先を倉曎する機䌚を䞎えおも良い(MAY)。

䟋えば、Chris が Amy による次の蚘事に「いいね」をするずき:

䟋13: 蚘事
{
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "en-GB"}],
  "id": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
  "type": "Article",
  "name": "Minimal ActivityPub update client",
  "content": "Today I finished morph, a client for posting ActivityStreams2...",
  "attributedTo": "https://rhiaro.co.uk/#amy",
  "to": "https://rhiaro.co.uk/followers/",
  "cc": "https://e14n.com/evan"
}

クラむアントによっお生成される「いいね」は:

䟋14: 蚘事ぞの「いいね」
{
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "en"}],
  "type": "Like",
  "actor": "https://dustycloud.org/chris/",
  "summary": "Chris liked 'Minimal ActivityPub update client'",
  "object": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
  "to": ["https://rhiaro.co.uk/#amy",
         "https://dustycloud.org/followers",
         "https://rhiaro.co.uk/followers/"],
  "cc": "https://e14n.com/evan"
}

受信した outbox は、(いいねした) Chris のフォロワヌだけでなく、 元の蚘事を受け取っおいる Amy、Amy のフォロワヌ、Evan にも 配送できる。

以䞋のアクティビティを outbox に投皿するクラむアントは、 アクティビティに object 属性も提䟛しなければならない(MUST): Create, Update, Delete, Follow, Add, Remove, Like, Block, Undo。さらに、以䞋のアクティビティを outbox ぞ投皿するクラむアントは、 target 属性も提䟛しなければならない(MUST): Add, Remove。

6.2 Create アクティビティ

Create アクティビティは新しいオブゞェクトを投皿するずきに䜿われる。これは、Activity の䞭に(object 属性ずしお)埋め蟌たれおいる オブゞェクトが䜜成されるずいう副䜜甚がある。

Create アクティビティが投皿されたずき、アクティビティの actor は object の attributedTo フィヌルドにコピヌされるべきである(SHOULD)。

Create アクティビティずその object のアドレス指定の 䞍䞀臎はおそらく混乱を匕き起こす。埓っお、サヌバは初期の配送時に Create アクティビティの宛先を その object にコピヌするべきであり(SHOULD)、 同様に object からラップしおいる Create アクティビティに コピヌするべきである(SHOULD)。Create のアドレス指定を倉曎するこずなく (䟋えば Update アクティビティで) object のアドレス指定を倉曎するこずは 受け入れられるこずに泚意するこず。

6.2.1 Create アクティビティなしでのオブゞェクト䜜成

クラむアントからサヌバぞの投皿で、 呚りのアクティビティなしでオブゞェクトを䜜成するこずも可胜である。サヌバは outbox ぞの POST リク゚ストで、 Activity のサブタむプでない 正圓な [ActivityStreams] オブゞェクトを受け入れなければならない(MUST)。サヌバはこのオブゞェクトを Create Activity の object ずしお添付しなければならない(MUST)。非䞀時的オブゞェクトに関しおは、 サヌバはラッピングした Create ずラップされた Object に察しお、id を 添付しなければならない(MUST)。

泚

サヌバから返された Location の倀は、 新しい(オブゞェクトではなく) Create アクティビティの URL であるべきである。

オブゞェクトで指定されおいる to, bto, cc, bcc, audience 属性は、 サヌバによっお新しい Create アクティビティにコピヌされなければならない(MUST)。

Example 15: Object with audience targeting
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Note",
  "content": "This is a note",
  "published": "2015-02-10T15:04:55Z",
  "to": ["https://example.org/~john/"],
  "cc": ["https://example.com/~erik/followers",
         "https://www.w3.org/ns/activitystreams#Public"]
}
前述の䟋は以䞋のように倉換される:
䟋16: サヌバによっお生成されたCreateアクティビティのラッパ
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "id": "https://example.net/~mallory/87374",
  "actor": "https://example.net/~mallory",
  "object": {
    "id": "https://example.com/~mallory/note/72",
    "type": "Note",
    "attributedTo": "https://example.net/~mallory",
    "content": "This is a note",
    "published": "2015-02-10T15:04:55Z",
    "to": ["https://example.org/~john/"],
    "cc": ["https://example.com/~erik/followers",
           "https://www.w3.org/ns/activitystreams#Public"]
  },
  "published": "2015-02-10T15:04:55Z",
  "to": ["https://example.org/~john/"],
  "cc": ["https://example.com/~erik/followers",
         "https://www.w3.org/ns/activitystreams#Public"]
}

6.3 Update アクティビティ

Update アクティビティは、既に存圚するオブゞェクトを曎新するずきに 䜿われる。これの副䜜甚ずしお、アクタヌがこのオブゞェクトを曎新する暩限を持っおいる堎合、 object は Update アクティビティで定矩されおいる新しい構造を 反映した圢で修正されなければならない(MUST)。

6.3.1 郚分曎新

クラむアントからサヌバぞの通信では、曎新は郚分的である; 文曞党䜓を䞀床に曎新するのではなく、指定された任意のキヌ/倀の組が 既存の倀を新しい倀に眮き換えるために䜿われる。これは曎新されるオブゞェクトの最䞊䜍のフィヌルドにのみ適甚される。特別な䟋倖は、倀が json の null 型の堎合である; これは、このフィヌルドはサヌバのオブゞェクト衚珟から 削陀されるべきず蚀うこずを意味する。

この振る舞いは、クラむアントがサヌバに投皿したずきのクラむアントからサヌバぞの 通信のみであるこずに泚意するこず。サヌバからサヌバぞの盞互䜜甚ず、サヌバからクラむアントぞの曎新は、 郚分的曎新が適甚された埌の、オブゞェクトの完党に新しい衚珟を含むべきであるこずに泚意するこず。より詳しくは サヌバ間盞互䜜甚での Update アクティビティ の説明を参照のこず。

6.4 Delete アクティビティ

Delete アクティビティは、既に存圚するオブゞェクトを 削陀するために䜿われる。この副䜜甚ずしお、サヌバは object を、 削陀されたオブゞェクトを参照するアクティビティで衚瀺される Tombstone のオブゞェクトに眮き換えおも良い(MAY)。削陀されたオブゞェクトが芁求された堎合、サヌバは、 レスポンスボディずしお Tombstone オブゞェクトが衚珟されおいる堎合は HTTP 410 Gone ステヌタスを、 さもなければ HTTP 404 Not Found ステヌタスを返すべきである (SHOULD)。

削陀されたオブゞェクト:

䟋17
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://example.com/~alice/note/72",
  "type": "Tombstone",
  "published": "2015-02-10T15:04:55Z",
  "updated": "2015-02-10T15:04:55Z",
  "deleted": "2015-02-10T15:04:55Z"
}

6.5 Follow アクティビティ

Follow アクティビティは、他のアクタヌのアクティビティを 賌読するために䜿われる。

これを outbox に受信した堎合の副䜜甚ずしお、 サヌバは、この Follow アクティビティをオブゞェクトずした Accept アクティビティを匕き続いお受信した堎合にのみ、 actor の following コレクション に object を远加するべきである(SHOULD)。

6.6 Add アクティビティ

Add アクティビティを outbox に受け取ったずき、 以䞋の堎合を陀いお、サヌバは object を target プロパティで指定されたコレクションに远加するべきである(SHOULD):

6.7 Remove アクティビティ

outbox に Remove アクティビティを受信するず、 サヌバは次の堎合を陀いお、 target 属性で指定されたコレクションから object を削陀するべきである(SHOULD)。

6.8 Like アクティビティ

Like アクティビティは アクタヌ が object を奜んでいるこずを瀺す。

これを outbox に受信したずきの副䜜甚ずしお、 サヌバは actor の liked コレクション に この object を远加するべきである(SHOULD)。

6.9 Block アクティビティ

Block アクティビティは、投皿したアクタヌは (object属性で定矩された)アクタヌが Block アクティビティを投皿したアクタヌによっお投皿された オブゞェクトず盞互䜜甚出来るこずを望たないこずを瀺すために䜿われる。サヌバはブロックしたナヌザヌず、このアクタヌによっお投皿された任意の オブゞェクトずの盞互䜜甚を防止するべきである (SHOULD)。

サヌバは Block アクティビティをその object に 配送するべきではない(SHOULD NOT)。

6.10 Undo アクティビティ

Undo アクティビティは以前のアクティビティを取り消すずきに䜿われる。Activity Vocabulary 文曞の Inverse Activities and "Undo" を参照のこず。䟋えば、Undo は以前の Like, Follow, Block のいずれかの 取り消しのために䜿われる。Undo アクティビティず取り消されるアクティビティはどちらも同じ actor を 持っおいなければならない(MUST)。副䜜甚ずしお、できるだけ広範囲に取り消しを行うべきである。䟋えば、もし Like を取り消すず、その前にむンクリメントされた カりンタは適切にデクリメントされるべきである。

既存の明瀺的な「逆アクティビティ」を代わりに䜿うべき䟋倖がある。Create ベヌスのアクティビティは Delete を、 Add アクティビティは Remove を䜿うべきである。

6.11 配送

連合サヌバは outbox に投皿された党おの Activity を outbox配送 に埓っお配送を実行しなければならない(MUST)。

6.12 メディアのアップロヌド

この節は非芏範的である。

サヌバは、画像、ビデオ、その他のバむナリデヌタのような、 アクティビティで参照される文曞型のアップロヌドに察応しおも良い(MAY)が、 正確な機構はこのバヌゞョンの ActivityPub のスコヌプ倖である。The Social Web Community Group は ActivityPub Media Upload report でプロトコルを掗緎させおいる。

7. サヌバからサヌバぞの通信

サヌバは、アクティビティをアクタヌの inbox ゚ンドポむントに ポストするこずで、他のサヌバず通信し、情報を゜ヌシャルグラフ䞊に䌝搬させる。ネットワヌク䞊を送られる Activity は、䞀時的であるこずを意図しおいる堎合を 陀き、id を持぀べきである(SHOULD) (䞀時的な堎合は id を省略しおも良い(MAY))。

(inbox などぞの) POST リク゚ストは Content-Type に application/ld+json; profile="https://www.w3.org/ns/activitystreams" を蚭定しなければならず(MUST)、GET リク゚スト (3.2 Retrieving objects も参照のこず) は Accept ヘッダに application/ld+json; profile="https://www.w3.org/ns/activitystreams" を 蚭定しなければならない(MUST)。サヌバは、サヌバからサヌバぞの通信においお、Content-Type や Accept ヘッダの application/activity+json を application/ld+json; profile="https://www.w3.org/ns/activitystreams" ず 等䟡なものずしお扱うべきである(SHOULD)。

゜ヌシャルグラフ䞊に曎新を䌝搬させるために、Activity は適切な宛先に 送信される。たず、これらの宛先は、アクタヌに到達するたでオブゞェクト間の適切なリンクを 蟿るこずで決定され、 それからこの Activity はアクタヌの inbox に挿入される (配送)。これにより、宛先サヌバは:

配送は通垞、䟋えば以䞋のもので匕き起こされる:

他のサヌバ䞊のアクタヌの inbox や publicInbox 属性ぞの配送を実行するサヌバは、 次のアクティビティ内に object 属性を提䟛しなければならない(MUST): Create, Update, Delete, Follow, Add, Remove, Like, Block, Undo。さらに、以䞋のアクティビティのサヌバ間配送を実行するサヌバは、 target 属性も提䟛しなければならない(MUST): Add, Remove

他のサヌバからの返答を受信するずきず他のサヌバぞ返答を送信するずきの 䞡方においお、適切な堎合には HTTP キャッシュ機構 [RFC7234] に 遵守するべきである(SHOULD)。

7.1 配送

以䞋は他の連合サヌバず通信する連合サヌバのみに芁求される。

アクティビティは、たずタヌゲット(これはアクタヌ)の inboxを探しお、それからそのinboxにアクティビティを投皿するこずで配送される。配送するタヌゲットは、 ActivityStreams audience targeting をチェックするこずで決定される; ぀たり、アクティビティの to, bto, cc, bcc, audience フィヌルドである。

inbox はたず タヌゲットアクタヌのJSON-LD衚珟を取埗し、 それから inbox 属性を探すこずで決定される。宛先が Collection たたは OrderedCollection の堎合、 サヌバはコレクションを(ナヌザヌの認蚌情報ず共に)展開し、コレクションの それぞれの芁玠の inbox を発芋しなければならない(MUST)。サヌバはコレクションの展開を実行する局の数を制限しなければならない(MUST); これは 1 でもよい(MAY)。

サヌバは最終的な宛先リストの重耇を解消しなければならい(MUST)。サヌバはたた、通知される Activity の アクタヌ ず同じアクタヌをリストから陀去しなければならない(MUST)。぀たり、ナヌザヌは自分のアクティビティを自分に配送するこずはできない。

泚: 暗黙でプラむベヌトなアクティビティ

宛先がない堎合にどうするかは未定矩であるが、もし宛先が指定されなかった堎合、 オブゞェクトを完党にプラむベヌトな状態においお、アクセスコントロヌルは そのオブゞェクトぞのアクセスを制限するこずが掚奚される。もしオブゞェクトが単に「パブリック」コレクションに送信された堎合、 オブゞェクトは誰にも配送されないが、アクタヌの outbox で公に閲芧可胜になる。

(投皿ナヌザヌの認蚌付きの) HTTP POST リク゚ストは、 アクティビティをリク゚ストのボディずしお inboxに行われる。このアクティビティは受信者によっお inbox OrderedCollection の item ずしお远加される。非連合サヌバの inbox ぞ配送しようずする詊みは 405 Method Not Allowed レスポンスを返すべきである(SHOULD)。

連合サヌバがサヌドパヌティヌサヌバぞ配送を実行する堎合には、 配送は非同期に実行されるべきであり(SHOULD)、 これがネットワヌク゚ラヌによっお倱敗した堎合は受信者ぞの配送を 再詊行するべきである(SHOULD)。

泚蚘: 同じ origin のアクタヌ間で 配送される Activity は任意の内郚機構を䜿っおもよく、HTTP を䜿うこずは芁求されない。

泚: Linked Data Notificationsずの関係

この仕様を理解するのに読むのは必須ではないが、 ActivityPub のタヌゲットず配送の機構は Linked Data Notifications 仕様ず 重耇しおいお、二぀の仕様は盞互に結合できるこずは蚘しおおく䟡倀がある。特に、inbox 属性は ActivityPub ず Linked Data Notifications で 同じで、この文曞に蚘述されおいるタヌゲットず配送の機構は Linked Data Notifications に支えられおいる。JSON-LD コンパクト化 ActivityStreams 文曞に加えお、 Linked Data Notifications は、ActivityPub 実装で必芁でない様々な RDF 盎列化も察応しおいる。しかし、より広く Linked Data Notifications 実装ず互換性を持たせたい ActivityPub 実装は、その他の RDF 衚珟に察応した方がよい。

7.1.1 サヌバ-サヌバ間のoutbox配送の芁件

オブゞェクトを outbox に受信したずき( クラむアントからサヌバぞの通信 ず サヌバからサヌバぞの通信 の䞡方に察応しおいるサヌバの堎合)、サヌバは 以䞋にタヌゲットしお配送しなければならない(MUST):

  • to, bto, cc, bcc, audience のいずれかのフィヌルド; その倀が 個人かactorに所有されおいるコレクションの堎合。

これらのフィヌルドは、このアクティビティをoutboxに投皿した クラむアントによっお適切に展開されおいる。

7.1.2 inboxからの転送

泚: ゎヌストリプラむ問題を避けるための転送

以䞋の節は、連合ネットワヌクで時々問題を匕き起こす、 「ゎヌストリプラむ」問題を緩和するためのものである。この問題を䟋で瀺す。

Alyssa は、䌚議での論文の発衚が䞊手くいったこずを投皿し、 友人である Ben を含む圌女のフォロワヌコレクションに送りたした。Ben は祝犏する内容を Alyssa のメッセヌゞに返信し、 宛先に圌女のフォロワヌコレクションを含めたした。しかし、Ben は Alyssa のフォロワヌコレクションの内容にアクセス出来ないので、 Ben のサヌバは圌のメッセヌゞを圌らの inbox に転送できたせん。次の機構がない堎合、その埌 Alyssa が Ben に返信するず、 圌女のフォロワヌは、Ben の返信を芋るこずなく Alyssa が Ben に返信するのを 芋るこずになりたす。これはずおも混乱したす!

Activity を inbox に受信したずき、 サヌバはこれらを送信元が配信できない宛先に転送する必芁がある。これを行うために、サヌバは次の党おが真の堎合にのみ、 to, cc, audience の倀にタヌゲットしお 配送 しなければならない(MUST):

  • サヌバがこの Activity を芋るのは初めおである。
  • to, cc, audience の倀に サヌバが所有しおいるコレクションが含たれおいる。
  • inReplyTo, object, target, tag の倀が サヌバが所有しおいるオブゞェクトである。サヌバは、自身が所有しおいるリンクされたオブゞェクトを探すためにこれらの倀を 再垰するべきであり(SHOULD)、 再垰の䞊限を蚭定するべきである(SHOULD) (぀たり、スレッドが深くなった時点で、受信フォロワヌは、 受信者に盎接関係ない曎新を受け取らなくおも気にしないかもしれない)。サヌバは転送された元のオブゞェクトの to, cc, audience の倀のみを タヌゲットし、(これらのアドレスが意図的に倉曎されたりクラむアントによっお) リンクされたオブゞェクトを再垰しおいる間の新しい受信者を拟わないように しなかければならない(MUST)。

サヌバは配送タヌゲットを実装䟝存の芏則(䟋えば spam フィルタ)で フィルタリングしおもよい(MAY)。

7.1.3 共有 inbox ぞの配送

倚くのアクタヌをホスティングしおいるサヌバでは、 党おのフォロワヌぞの配送は倧量のメッセヌゞを送信するこずになるこずがある。䞀郚のサヌバはたた、パブリックに投皿された党おのメッセヌゞのリストを "known network" ずしお衚瀺したい。埓っお ActivityPub はこれら二぀のナヌスケヌスを扱うためのオプションの機構を 提䟛する。

配送元アクタヌのfollowersにオブゞェクトが配送されるずき、 サヌバは、同じ sharedInbox を持぀党おの フォロワヌを識別しお、 代わりにオブゞェクトを sharedInbox ずいう名前に配送するこずで 配送する受信アクタヌの数を枛らしおも良い(MAY)。埓っおこのシナリオでは、 リモヌト/受信サヌバは特定の inbox ぞのタヌゲットず配送の実行の 決定に関䞎する。

さらに、オブゞェクトが Public 特殊コレクションに アドレス指定されおいる堎合、 サヌバはこのオブゞェクトをネットワヌク䞊の党おの既知の sharedInbox ゚ンドポむントに配送しおも良い(MAY)。

パブリックにアドレス指定されたアクティビティを sharedInbox ゚ンドポむントに送信する送信元サヌバは、 その他に (to, bto, cc, bcc, および audience を通しお) アドレス指定された、 sharedInbox を持たないので sharedInbox 機構を通じおアクティビティを 受信できない actor やコレクションには配送しなければならない(MUST)。

7.2 Create アクティビティ

inbox に Create アクティビティを受信したずきには、 意倖にもほずんど副䜜甚はない; このアクティビティはアクタヌの inbox に珟れるべきで、 サヌバはおそらくこのアクティビティずそれに添付されおいるオブゞェクトの衚珟を ロヌカルに保管したいはずである。しかし、これはずにかく inbox にアクティビティが配送されたずきに ほずんど䞀般的に凊理されるこずである。

7.3 Update アクティビティ

サヌバからサヌバぞの通信では、 Update アクティビティは、 同じ id の object のコピヌを、 Update アクティビティの䞭に䟛絊されおいるコピヌで 曎新するべきである(SHOULD)。 Update アクティビティのクラむアントからサヌバぞの扱い ず異なり、 これは郚分曎新ではなくオブゞェクトの完党な眮き換えである。

受信サヌバは Update がその object を修正する暩限があるこずを 確認するこずに泚意しなければならない(MUST)。最小限ずしお、これは Update ずその object が同じ送信元であるこずを確認するこずで行われる。

7.4 Delete アクティビティ

(object は送信したアクタヌ/サヌバが所有しおいるず仮定しお) これを受信したずきの副䜜甚ずしお、 Delete アクティビティを受信したサヌバは 同じ id を持぀ object の衚珟を削陀するべき(SHOULD)で、 衚珟を Tombstone オブゞェクトに眮き換えおも良い(MAY)。

(あるアクティビティが発信元サヌバからリモヌトサヌバに転送された埌、 オブゞェクトの衚珟をリモヌトをリモヌトで削陀するこずを 匷制する 方法は、ActivityPub プロトコルにはないずいうこずに泚意するこず。)

7.5 Follow アクティビティ

これを inbox に受信したずきの副䜜甚ずしお、 サヌバは、この Follow を object に蚭定した Accept たたは Reject アクティビティを生成し、 Follow した アクタヌ に配送するべきである(SHOULD)。Accept や Reject は自動的に生成しおも良い(MAY)し、 (おそらくはナヌザヌの確認のための倚少の遅延の埌)ナヌザヌ入力の 結果ずしおもよい(MAY)。サヌバは Follow ぞの応答ずしお明瀺的に Reject を 送らないずいう遞択をしおもよい(MAY)が、実装者はリク゚ストを送信したサヌバが 䞭間的な状態のたたになるかもしれないこずに泚意するべきである。䟋えば、サヌバはナヌザヌのプラむバシヌを守るために Reject を 送信しないかもしれない。

この Follow を object ずしお参照しおいる Accept を 受信する堎合、サヌバは object の actor の Followers コレクション に アクタヌ を远加するべきである(SHOULD)。Reject の堎合、object の actor の Followers コレクション に actor を 远加しおはならない(MUST NOT)。

泚

時々、Follow 賌読が成功したものの、将来のある時点で 長期間フォロワヌぞの配送が倱敗するようになるこずがある。実装は、ネットワヌク䞊のアクタヌが到達可胜であり続ける保蚌がないこずに泚意し、 それに応じお実装するべきである。䟋ずしお、あるアクタヌぞの配送の詊みが䟋えば 6 ヶ月間フォロワヌに 到達䞍胜であり続けた堎合、配送サヌバがその賌読者を followers から 削陀するのは合理的である。到達䞍胜なアクタヌを扱うための期間ず振る舞いは配送サヌバの 裁量に委ねられおいる。

7.6 Accept アクティビティ

これを inbox に受信した堎合の副䜜甚は、受信した object の型によっお決定され、(䟋えば Offer のような) この文曞に蚘述しおいない型を受け入れるこずも可胜である。

inbox に受信した Accept の object が、以前受信者によっお送られた Follow アクティビティの堎合、 サヌバは 受信者の Following コレクションn に actor を远加するべきである(SHOULD)。

7.7 Reject アクティビティ

これを inbox に受信するこずによる副䜜甚は、 受信した object の型によっお決定され、 この文曞に蚘述されおいない型 (䟋えば Offer)を 拒吊するこずもできる。

inbox に受信した Reject の object が、以前受信者によっお送られた Follow アクティビティの堎合、 これは受け取り偎が Follow リク゚ストを承認しなかったこずを 意味する。サヌバは受信者の Following コレクション に actor を远加しおはならない(MUST)。

7.8 Add アクティビティ

Add アクティビティを inbox に受け取ったずき、 次のような堎合を陀いお、サヌバは target 属性で指定された コレクションに object を远加するべきである (SHOULD):

7.9 Remove アクティビティ

Remove アクティビティを inbox に受け取ったずき、 次のような堎合を陀いお、サヌバは target 属性で指定された コレクションから object を陀去するべきである (SHOULD):

7.10 Like アクティビティ

これを inbox に受信したずきの副䜜甚ずしお、 サヌバは、likes コレクションがある堎合は、 このコレクションに受信したアクティビティを远加するこずで このオブゞェクトのいいねのカりントを増やすべきである (SHOULD)。

7.11 Announce アクティビティ (共有)

Announce アクティビティを inbox に 受け取ったずき、サヌバは、shares コレクションがある堎合は、このコレクションに受信したアクティビティを 远加するこずで、 このオブゞェクトの共有のカりントを増やすべきである (SHOULD)。

泚
Announce アクティビティは事実䞊他の゜ヌシャルネットワヌクでの "sharing", "reposting", "boosting" ずしお知られおいるものである。

7.12 Undo アクティビティ

Undo アクティビティは、以前のアクティビティの副䜜甚を 取り消すために䜿われる。ActivityStreams 文曞の Inverse Activities and "Undo" を参照のこず。Undo アクティビティのスコヌプず制限は クラむアントサヌバ間での Undo アクティビティ ず同様であるが、 連合コンテキストに適甚される。

A. 囜際化

この節は非芏範的である。

連合ネットワヌクにおいおナヌザヌの囜際化の基瀎を構築するこずは重芁である。 ActivityStreams はコンテンツの囜際化のためのツヌルを提䟛 しおおり、 可胜であればこれが䜿われるべきである。しかし、ナヌザヌが投皿したコンテンツに察しおどの @language 属性 を 提䟛するかを決定するのは実装䞊難しいかもしれない。W3C Internationalization group はいく぀かの 蚀語怜出のガむド を提䟛しおいる。

B. セキュリティ䞊の考慮事項

この節は非芏範的である。

B.1 認蚌ず認可

ActivityPub は認蚌を二぀の目的で甚いる; 䞀぀目はクラむアントからサヌバぞの認蚌、 二぀目は連合実装においおサヌバ間の認蚌である。

残念ながら暙準化の時点で、認蚌機構ずしお匷力に合意されたものはない。認蚌で取り埗る方向性は the Social Web Community Group Authentication and Authorization best practices report にある。

B.2 怜蚌

䜕らかの圢の怜蚌なしに、サヌバはクラむアントが投皿したコンテンツを 信頌するべきではないし、 連合サヌバはコンテンツの発信源以倖のサヌバから受け取ったコンテンツを 信頌するべきではない。

新しいコンテンツが、それを投皿したず䞻匵しおいるアクタヌから本圓に 投皿されおいるこずず、そのアクタヌがそのリ゜ヌスを曎新する暩限を 持っおいるこずを、 サヌバは慎重に怜蚌するべきである。3. オブゞェクト ず B.1 認蚌ず認可 も参照のこず。

B.3 localhost URIぞのアクセス

開発䞭、localhost で実行したプロセスに察しおテストするのはしばしば有甚である。しかし、補品版クラむアントやサヌバむンスタンスで localhost ぞの リク゚ストを蚱すこずは危険なこずがある。認蚌を必芁ずしない localhost の URI ぞのリク゚ストは、localhost でのみ 利甚可胜ずしお保護されおいるこずを想定されおいるリ゜ヌスぞのアクセスや修正が 意図せず起きるこずがある。

自䜜の ActivityPub サヌバやクラむアントが開発目的のために localhost URI ぞの リク゚ストを蚱す堎合、デフォルトでオフの蚭定オプションにするこずを 考慮するこず。

B.4 URIスキヌマ

http ず https に加えお、様々な皮類の URI がある。ラむブラリによっおは様々な URI スキヌムでのフェッチリク゚ストを扱い、 賢くあろうずしお、file のような 想定しおいないスキヌムを参照するかもしれない。クラむアントずサヌバの䜜者はラむブラリがリク゚ストをどのように扱うかを 泚意深くチェックし、http ず https のような、 特定の安党な URI 型のみのホワむトリストを䜜るべきである。

B.5 再垰オブゞェクト

サヌバはオブゞェクト、あるいは特に再垰参照を持぀ ActivityStream オブゞェクトの 解決䞭にどれだけ深く再垰するかの制限を蚭定するべきである。これを適切に行うこずに倱敗するず、サヌビス拒吊セキュリティ脆匱性を 起こすこずがある。

B.6 スパム

スパムはあらゆるネットワヌクで問題だが、特に連合ネットワヌクではそうである。ActivityPub ではスパムず闘うための特定の機構は提䟛しないが、 サヌバは、ある皮のスパムフィルタを通しおロヌカルの信頌できないナヌザヌず党おの リモヌトナヌザヌの䞡方から入力される内容をフィルタリングするこずが勧められる。

B.7 連合サヌビス䞍胜攻撃

サヌバは、その他の連合サヌバからのサヌビス䞍胜攻撃に察する防埡を 実装するべきである。これは、䟋えば、ある皮のレヌト制限機構のようなものを䜿うこずで実珟できる。サヌバは特に、副䜜甚を匕き起こすアクティビティに関する この保護を実装するこずに泚意するべきである。サヌバは、䟋えば指数バックオフ戊略を䜿うこずで、 送信するこずでサヌバを過負荷にしないように気を䜿うべきである(SHOULD)。

B.8 クラむアントからサヌバぞの通信量制限

サヌバは API クラむアント送信をレヌト制限するべきである。これは二぀の目的がある:

  1. 悪意のあるクラむアントがサヌバにサヌビス䞍胜攻撃を仕掛けるのを防止する。
  2. 他のサヌバの サヌビス䞍胜攻撃保護を 匕き起こすような倧量のアクティビティを配信しないようにする。

B.9 クラむアントからサヌバぞのレスポンスのサヌビス拒吊

倧きすぎるコレクションによっおクラむアントが過負荷になるこずを防ぐために、 サヌバはクラむアントに返すコレクションペヌゞの倧きさを制限するこずに 泚意するべきである。クラむアントも、悪意あるサヌバや故障したサヌバず接続する堎合に備えお、 䟋えば時間切れや゚ラヌを生成するこずで、レスポンスのサむズを制限するこずに 備えるべきである。

B.10 内容のサニタむズ

ブラりザ(たたはその他のリッチテキストが有効なアプリケヌション)で レンダリングされる党おのアクティビティフィヌルドは、 クロスサむトスクリプト攻撃を防ぐために、マヌクアップを含む フィヌルドのサニタむズに泚意するべきである。

B.11 btoおよびbcc属性の非衚瀺

bto ず bcc はすでに、 配送時に削陀されなければならないが、 しかしサヌバは自身のストレヌゞシステムの䞭でオブゞェクトをどのように衚珟するか 自由に決定できる。しかし、bto ず bcc はオブゞェクト/アクティビティの 元の䜜者のみによっお知られる/芋られるこずを意図しおいるので、 サヌバは衚瀺においおこれらの属性を省略するべきである。

C. 謝蟞

この節は非芏範的である。

この仕様は、web 䞊の連合空間を探玢する倚くのコミュニティによる、 䜕幎にもわたる倚倧な努力ず経隓に由来する。特に、この仕様の倚くの郚分は、 StatusNet (珟圚は GNU Social) ず Pump.io によっお開拓された OStatus ず Pump API から 情報を受けおいる。これらの䞡方の構想は倚くの開発者の倚倧な努力の成果であるが、 その䞭でも、Evan Prodromou はこの分野での倉わらないリヌダヌであり、 圌の倚倧な努力なしには、珟圚の状態のような ActivityPub が 存圚するこずはなかったであろう。

Erin Shepherd は、 Pump API 文曞のアむデアを借りお、この仕様の初期版を䜜成した; 文章はほずんど完党に曞き換えられたが、ほずんどの基本的なアむデアは共有し、 ActivityStreams 1 から ActivityStreams 2 に切り替えた。

Jessica Tallon ず Christine Lemmer-Webber は、 暙準が W3C Social Working Group に 移動した時点で線集者を匕き継ぎ、 Erin Shepherd の文曞から珟圚の ActivityPub の状態ぞの移行の倧郚分が行われた。Social Working Group の長いフィヌドバック手続きの䞋、 文曞の倚くは曞き換えられ、再構成された。

ActivityPub は W3C Social Working Group の 倚くのメンバヌによる泚意深い助蚀によっお圢䜜られた。ActivityPub は特に Amy Guy に倚くの借りがある; [Social-Web-Protocols] での䜜業を通じお、 Social Working Group の様々な文曞に枡るアむデアを 他の誰よりも倚く䜍眮づけた。Amy はたた、Christopher Allan Webber ず共に、4 日間のスプリントで ActivityPub 仕様の倧幅なリファクタリングの基瀎を築いた。これらの改蚂により、様々な改良の䞭でも、ActivityPub の [LDN] ずの関係の 明確化ず、クラむアント-サヌバ通信ずサヌバ間通信のより明確な分離が行われた。実装報告テンプレヌトを取りたずめた Benjamin Goering にも特に感謝する。我々はたた、玠晎らしいチュヌトリアルむラスト (これはこの文曞の他の郚分ず同じラむセンスが適甚されおいる) を䜜成した mray にも感謝する。

たた、泚意深いレビュヌを通しお倚くの人々が ActivityPub を助けた。特に、次の方々に感謝する: Aaron Parecki, AJ Jordan, Benjamin Goering, Caleb Langeslag, Elsa Balderrama, elf Pavlik, Eugen Rochko, Erik Wilde, Jason Robinson, Manu Sporny, Michael Vogel, Mike Macgirvin, nightpool, Puck Meerburg, Sandro Hawke, Sarven Capadisli, Tantek Çelik, and Yuri Volkov.

この文曞は地球䞊の党おの䜏民に捧げる。あなた達には通信の自由がある; 私達は、このゎヌルず暩利に向けお、 小さいながらも䞀郚貢献しおいるこずを期埅する。

D. 参考文献

D.1 匕甚芏栌

[Activity-Vocabulary]
Activity Vocabulary. J. Snell. ActivityStreams Working Group. Editors Draft. URL: https://www.w3.org/TR/activitystreams-vocabulary/
[ActivityStreams]
Activity Streams 2.0. J. Snell. ActivityStreams Working Group. Editors Draft. URL: https://www.w3.org/TR/activitystreams-core/
[JSON-LD]
JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 16 January 2014. W3C Recommendation. URL: https://www.w3.org/TR/json-ld/
[LDN]
Linked Data Notifications. Sarven Capadisli; Amy Guy. W3C. 2 May 2017. W3C Recommendation. URL: https://www.w3.org/TR/ldn/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119
[RFC7231]
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7231
[RFC7234]
Hypertext Transfer Protocol (HTTP/1.1): Caching. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7234

D.2 参考芏栌

[Micropub]
Micropub. Aaron Parecki. W3C. 23 May 2017. W3C Recommendation. URL: https://www.w3.org/TR/micropub/
[RFC6749]
The OAuth 2.0 Authorization Framework. D. Hardt, Ed.. IETF. October 2012. Proposed Standard. URL: https://tools.ietf.org/html/rfc6749
[RFC6750]
The OAuth 2.0 Authorization Framework: Bearer Token Usage. M. Jones; D. Hardt. IETF. October 2012. Proposed Standard. URL: https://tools.ietf.org/html/rfc6750
[Social-Web-Protocols]
Social Web Protocols. Amy Guy. W3C. 25 December 2017. W3C Note. URL: https://www.w3.org/TR/social-web-protocols/