為了與其它聯邦軟體以及自身聯合,Plume使用各種協議:
- ActivityPub,作為主要的聯邦協議。
- WebFinger,用來輕鬆找尋其他使用者和部落格。
- HTTP Signatures,用來驗證活動。
- NodeInfo,這不是聯邦本身的一部份,但這提供了每個實例的一些元數據。
目前,以下幾個方面是能與聯邦互通的:
- 使用者檔案
- 部落格
- 文章
- 註釋
- 讚
- 轉發
而這些部分沒有與聯邦互通,但將來可能會有:
- 媒體相簿
- 站點元數據
WebFinger
WebFinger用來發現遠程設定文件 當你打開一個陌生使用者頁面時 (/@/username@instance.tld
),Plume 將向另一個站點發送 WebFinger 請求,在標準/.well-known/webfinger
端點。 Plume 將忽略 /.well-known/host-meta
端點,這通常可用於定義另一個 WebFinger 端點,並始終使用標準 URL。
Plume 使用 webfinger
crate 來提供
WebFinger 資訊並獲取它們。
HTTP Signatures
Plume 檢查每個傳入的 Activity 是否已使用actor
的金鑰對進行簽名。
為此,它使用Signature
HTTP header。 有關 header 產生方法的更多細節請參考 HTTP Signatures 規範.
Digest
header 也應該存在並用於產生簽名,所以我們也可以驗證請求的主體。
NodeInfo
Plume 在/nodeinfo
URL上使用 NodeInfo 公開站點的元數據。
輸出範例
{
"version": "2.0",
"software": {
"name": "Plume",
"version": "0.2.0"
},
"protocols": ["activitypub"],
"services": {
"inbound": [],
"outbound": []
},
"openRegistrations": true,
"usage": {
"users": {
"total": 42
},
"localPosts": 7878,
"localComments": 1312
},
"metadata": {}
}
ActivityPub
每個使用者在/@/username/inbox
都有一個人收件夾,每個站點都有一個共享的收件夾位於/inbox
。
如果可用,Plume 將使用共享收件夾來傳送活動。
項目表示
Note
代表評論Article
是文章Person
是給使用者Group
是給部落格
支持的活動
Plume 0.2.0 支持以下活動類型。
同意
同意關注請求
這收到時將被忽略,因為 Plume 認為跟隨請求是在任何情況下立即獲得批准,然而,這將在未來改變。
當收到 關注
活動,Plume 將對此做出回應。
actor
是接受請求的使用者IDobject
是Follow
object being accepted.
宣布
轉發文章,不適用於其它對象。
讓使用者 (actor
) 轉發文章 (object
).
actor
是轉發文章的使用者的IDobject
是要轉發的文章的ID。
建立
建立一個新文章或評論
如果 object
是 Article
:
object.attibutedTo
是一個包含作者和部落格 ID 的清單 其中發表了這篇文章。 如果未指定部落格 ID,則文章將被拒絕。actor
對應於點擊使用者的 “發布” 按鈕,並且通常應該是attributedTo
中的作者之一。object.name
是文章標題。object.content
是包含文章HTML的字句內容object.creationDate
是本文首次發表的日期object.source
是一個Source
目標, 其內容是 Markdown 來源本文object.tag
是一個清單,它的元素如下- 一個
Hashtag
目標,用於文章標籤(文章末尾顯示的全局標籤和文章本身的主題標籤此時兩者之間沒有區別)。 - 一個
Mention
目標, 對此提到的每一位作者文章
- 一個
如果 object
是 Article
:
object.content
是呈現評論的 HTML 原始碼object.inReplyTo
是支線上的一個評論 ID,或者如果沒有以前的評論,則評論發文。object.spoilerText
是要顯示在評論位置的字句,除非讀者明確表達他們想要看到實際內容的意願(即 Mastodon 中的內容警告)object.tag
是一個Mention
清單,對應被提及的使用者。
刪除
刪除首先使用 Create
活動建立的目標。
object
是一個Tombstone
,以及 object.id
是要刪除的對象的 ID(或者文章 ID 或註釋 ID)
關注
收到後,actor 將添加到目標的關注者列表中。
Plume 會立即接受這些活動(請參閱同意
)。
對於部落格,除了發回 同意
之外,他們實際上不會做任何其他事情活動:關注部落格尚未實現。
actor
是 Actor 或Person
對象的 ID。 它代表新的追隨者object
是目標使用者或部落格ID
讚
可以用來幫文章按讚
actor
是喜歡文章的使用者IDobject
是被點讚的文章ID
更新
更新文章
object
是Article
目標. 除了id
之外,它沒有必填字段。 僅有的當前字段將被更新object.id
是正在更新的文章IDobject.title
是文章新標題。object.content
是文章更新後的 HTML。object.subtitle
是更新文章副標題。object.source
是一個Source
目標,它的content
屬性是更新後的文章的 markdown。
復原
取消之前的操作(點讚、轉發或關注)。
object
是Announce
,Follow
或Like
to undo.