-
Notifications
You must be signed in to change notification settings - Fork 12
Description
Simplified API
狙い: APIをできるだけシンプルにする
-> なぜなら: サードパーティのconcrnt実装を容易にするため
主にfocusするのは、いわゆる連合や、外部のユーザーからのアクセスを受け入れるAPI。
1.0のいい部分:
書き込みが/commit エンドポイントだけ
なので、読み込みも1つのエンドポイントにまとめたいかも
ここで、con:// というURLスキームを導入したい。
例えば、いまhttps://<domain>/api/v1/entity/con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2 で表現されているEntity APIは
con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2 にする。
メッセージは
con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2/m346xssmcf3072yhd06bq9a7exr
アソシエーションやプロフィールも同様。
semanticIDが割り振られているプロフィールなども
con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2/world.concrnt.p
みたいな感じ
課題があるのは、タイムラインのクエリ等
タイムラインの情報を取得する/api/v1/timeline/tvtwreay639zpgjdw067y1qmj28@ariake.concrnt.net は
con://ariake.concrnt.net/tvtwreay639zpgjdw067y1qmj28
でいいとして、
クエリAPI /api/v1/timeline/world.concrnt.t-home@con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2/query?until=1749986252&limit=16 は
con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2/world.concrnt.t-home/query?until=1749986252&limit=16
にするのが自然だろうか...。
最新の投稿を取得する https://denken.concrnt.net/api/v1/timelines/recent?timelines=tvtwreay639zpgjdw067y1qmj28@ariake.concrnt.net,tn2zatje29zdr22n2067w8rd21c@ariake.concrnt.net,...
とかはどうマッピングしたらいいだろうか?
いろいろ考えた結果...
最終的に作るAPIは
シングルオブジェクト系
/api/v1/resource?id=con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2
タイムラインのクエリ
/api/v1/resource?id=con://con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2/world.concrnt.t-home&query=timeline&until=1749986252&limit=16
複数タイムラインのクエリ
/api/v1/resource?ids=con://ariake.concrnt.net/tvtwreay639zpgjdw067y1qmj28,con://ariake.concrnt.net/tn2zatje29zdr22n2067w8rd21c&query=recent
commitと併せて.well-knownで公告する
/.well-known/concrnt
{
"version": "0.1",
"endpoints": {
"resource": "/api/v1/resource",
"commit": "/api/v1/commit"
},
"csid": "ccs1......",
}
のがよさそう。考え中。