example.com -> example.org
[Seppo.git] / doc / 00012_--_arch_design.txt
blob11028da74e47fe58f512dc7cd912078548877dcd
2 Q: how to test webfinger/RFC7033?
4 A: Take the current username or 'seppo' on the current domain: @seppo@demo.mro.name
5 and ensure a valid id and inbox lookup. Both must respond proper json.
7 Caveat: leaks the username. But they are public anyway.
10 https://github.com/w3c/activitypub/issues/194
12 $ curl -L --head 'https://demo.mro.name/.well-known/webfinger?resource=acct:seppo@demo.mro.name'
13 HTTP/2 301
14 location: /seppo/.well-known/webfinger/?resource=acct:seppo@demo.mro.name
15 date: Tue, 19 Apr 2022 18:18:10 GMT
16 server: lighttpd/1.4.59
18 HTTP/2 200
19 content-type: application/json
20 accept-ranges: bytes
21 etag: "2523288411"
22 last-modified: Wed, 23 Mar 2022 11:26:02 GMT
23 content-length: 542
24 date: Tue, 19 Apr 2022 18:58:07 GMT
25 server: lighttpd/1.4.59
28   "subject": "acct:seppo@demo.mro.name",
29   "aliases": [
30     "https://demo.mro.name/seppo/as/me/"
31   ],
32   "links": [
33     {
34       "rel": "http://webfinger.net/rel/profile-page",
35       "type": "text/html",
36       "href": "https://demo.mro.name/seppo/"
37     },
38     {
39       "rel": "self",
40       "type": "application/activity+json",
41       "href": "https://demo.mro.name/seppo/as/me/"
42     },
43     {
44       "rel": "http://ostatus.org/schema/1.0/subscribe",
45       "template": "https://demo.mro.name/seppo/seppo.cgi/ostatus/authorize?uri={uri}"
46     }
47   ]
51 $ curl -L 'https://demo.mro.name/seppo/as/me/'
52 $ curl -L -H 'Accept: application/activity+json' 'https://digitalcourage.social/users/mro'
53 HTTP/2 200
54 content-type: application/activity+json; charset=utf-8
57   "@context": [
58     "https://www.w3.org/ns/activitystreams",
59     "https://w3id.org/security/v1",
60     {
61       "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
62       "toot": "http://joinmastodon.org/ns#",
63       "featured": {
64         "@id": "toot:featured",
65         "@type": "@id"
66       },
67       "featuredTags": {
68         "@id": "toot:featuredTags",
69         "@type": "@id"
70       },
71       "alsoKnownAs": {
72         "@id": "as:alsoKnownAs",
73         "@type": "@id"
74       },
75       "movedTo": {
76         "@id": "as:movedTo",
77         "@type": "@id"
78       },
79       "schema": "http://schema.org#",
80       "PropertyValue": "schema:PropertyValue",
81       "value": "schema:value",
82       "discoverable": "toot:discoverable",
83       "Device": "toot:Device",
84       "Ed25519Signature": "toot:Ed25519Signature",
85       "Ed25519Key": "toot:Ed25519Key",
86       "Curve25519Key": "toot:Curve25519Key",
87       "EncryptedMessage": "toot:EncryptedMessage",
88       "publicKeyBase64": "toot:publicKeyBase64",
89       "deviceId": "toot:deviceId",
90       "claim": {
91         "@type": "@id",
92         "@id": "toot:claim"
93       },
94       "fingerprintKey": {
95         "@type": "@id",
96         "@id": "toot:fingerprintKey"
97       },
98       "identityKey": {
99         "@type": "@id",
100         "@id": "toot:identityKey"
101       },
102       "devices": {
103         "@type": "@id",
104         "@id": "toot:devices"
105       },
106       "messageFranking": "toot:messageFranking",
107       "messageType": "toot:messageType",
108       "cipherText": "toot:cipherText",
109       "suspended": "toot:suspended",
110       "focalPoint": {
111         "@container": "@list",
112         "@id": "toot:focalPoint"
113       }
114     }
115   ],
116   "id": "https://digitalcourage.social/users/mro",
117   "type": "Person",
118   "following": "https://digitalcourage.social/users/mro/following",
119   "followers": "https://digitalcourage.social/users/mro/followers",
120   "inbox": "https://digitalcourage.social/users/mro/inbox",
121   "outbox": "https://digitalcourage.social/users/mro/outbox",
122   "featured": "https://digitalcourage.social/users/mro/collections/featured",
123   "featuredTags": "https://digitalcourage.social/users/mro/collections/tags",
124   "preferredUsername": "mro",
125   "name": "Marcus Rohrmoser 🌍",
126   "summary": "\\u003cp\\u003eProgrammer 📱 🍏 🐫 λ.\\u003cbr /\\u003eFostering the indieweb.org/POSSE\\u003c/p\\u003e",
127   "url": "https://digitalcourage.social/@mro",
128   "manuallyApprovesFollowers": false,
129   "discoverable": true,
130   "published": "2022-03-31T00:00:00Z",
131   "devices": "https://digitalcourage.social/users/mro/collections/devices",
132   "alsoKnownAs": [
133     "https://pleroma.tilde.zone/users/mro"
134   ],
135   "publicKey": {
136     "id": "https://digitalcourage.social/users/mro#main-key",
137     "owner": "https://digitalcourage.social/users/mro",
138     "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsp6FAA+3suRcIBIoo6O6\nChjPz3eBvKgIEv8HMP0lH7rTJOO6JCMpx8LhFVg3zQ8WeSECJinRe2dFDpdqjved\nrxKIu77p+RLkH5lRJZvXimOJNa+ea2A9YDQn6Km9VQ5EaiDsGCxopvHWFmsBy9da\ng+7ftwl+FwUhyNntwxdNJ3PTtV3qRnynq2UezyD3/jSELZ6uufgXIpt/6qFWM13K\nGfqKe0JgJE5APT5UiufUjtybnhNWqO9kYH5VaA9LaIWreDfk5sU2qa9xvUpcvRl0\nxpDDI3ROlzuApTmqh7ERybAlepNOtxg1oJyDkbxNWTRJWcDFZvScDXV226CxF15S\niQIDAQAB\n-----END PUBLIC KEY-----\n"
139   },
140   "tag": [],
141   "attachment": [
142     {
143       "type": "PropertyValue",
144       "name": "Zettelkasten",
145       "value": "\\u003ca href=\"http://mro.name/microblog\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\"\\u003e\\u003cspan class=\"invisible\"\\u003ehttp://\\u003c/span\\u003e\\u003cspan class=\"\"\\u003emro.name/microblog\\u003c/span\\u003e\\u003cspan class=\"invisible\"\\u003e\\u003c/span\\u003e\\u003c/a\\u003e"
146     },
147     {
148       "type": "PropertyValue",
149       "name": "📍",
150       "value": "\\u003ca href=\"http://mro.name/traunstein\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\"\\u003e\\u003cspan class=\"invisible\"\\u003ehttp://\\u003c/span\\u003e\\u003cspan class=\"\"\\u003emro.name/traunstein\\u003c/span\\u003e\\u003cspan class=\"invisible\"\\u003e\\u003c/span\\u003e\\u003c/a\\u003e"
151     }
152   ],
153   "endpoints": {
154     "sharedInbox": "https://digitalcourage.social/inbox"
155   },
156   "icon": {
157     "type": "Image",
158     "mediaType": "image/jpeg",
159     "url": "https://digitalcourage.social/system/accounts/avatars/108/050/262/287/113/206/original/c152bff1a001819f.jpg"
160   }