polaris64,

Every user, post, community, etc. on each of these services is represented as an ActivityPub object. Let’s take the example of following your Lemmy user from Mastodon. I can search for @Gohos in Mastodon and in the background my Mastodon instance will issue the following WebFinger request to lemmy.ml: lemmy.ml/.well-known/webfinger?resource=acct:Goho…. This will return the following JSON: -

<pre style="background-color:#ffffff;">
<span style="color:#323232;">{
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"subject"</span><span style="color:#323232;">: "acct:[email protected]",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"links"</span><span style="color:#323232;">: [
</span><span style="color:#323232;">    {
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"rel"</span><span style="color:#323232;">: "http://webfinger.net/rel/profile-page",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"type"</span><span style="color:#323232;">: "text/html",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"href"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos"
</span><span style="color:#323232;">    },
</span><span style="color:#323232;">    {
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"rel"</span><span style="color:#323232;">: "self",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"type"</span><span style="color:#323232;">: "application/activity+json",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"href"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"properties"</span><span style="color:#323232;">: {
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#183691;">"https://www.w3.org/ns/activitystreams#type"</span><span style="color:#323232;">: "Person"
</span><span style="color:#323232;">      }
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">  ]
</span><span style="color:#323232;">}
</span>

From here I can request the application/activity+json URL at lemmy.ml/u/Gohos and if I request JSON I get: -

<pre style="background-color:#ffffff;">
<span style="color:#323232;">{
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"@context"</span><span style="color:#323232;">: [
</span><span style="color:#323232;">    "https://www.w3.org/ns/activitystreams",
</span><span style="color:#323232;">    "https://w3id.org/security/v1",
</span><span style="color:#323232;">    {
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"lemmy"</span><span style="color:#323232;">: "https://join-lemmy.org/ns#",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"litepub"</span><span style="color:#323232;">: "http://litepub.social/ns#",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"pt"</span><span style="color:#323232;">: "https://joinpeertube.org/ns#",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"sc"</span><span style="color:#323232;">: "http://schema.org/",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"ChatMessage"</span><span style="color:#323232;">: "litepub:ChatMessage",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"commentsEnabled"</span><span style="color:#323232;">: "pt:commentsEnabled",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"sensitive"</span><span style="color:#323232;">: "as:sensitive",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"matrixUserId"</span><span style="color:#323232;">: "lemmy:matrixUserId",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"postingRestrictedToMods"</span><span style="color:#323232;">: "lemmy:postingRestrictedToMods",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"removeData"</span><span style="color:#323232;">: "lemmy:removeData",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"stickied"</span><span style="color:#323232;">: "lemmy:stickied",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"moderators"</span><span style="color:#323232;">: {
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#183691;">"@type"</span><span style="color:#323232;">: "@id",
</span><span style="color:#323232;">        </span><span style="font-weight:bold;color:#183691;">"@id"</span><span style="color:#323232;">: "lemmy:moderators"
</span><span style="color:#323232;">      },
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"expires"</span><span style="color:#323232;">: "as:endTime",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"distinguished"</span><span style="color:#323232;">: "lemmy:distinguished",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"language"</span><span style="color:#323232;">: "sc:inLanguage",
</span><span style="color:#323232;">      </span><span style="font-weight:bold;color:#183691;">"identifier"</span><span style="color:#323232;">: "sc:identifier"
</span><span style="color:#323232;">    }
</span><span style="color:#323232;">  ],
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"type"</span><span style="color:#323232;">: "Person",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"id"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"preferredUsername"</span><span style="color:#323232;">: "Gohos",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"inbox"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos/inbox",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"outbox"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos/outbox",
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"publicKey"</span><span style="color:#323232;">: {
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#183691;">"id"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos#main-key",
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#183691;">"owner"</span><span style="color:#323232;">: "https://lemmy.ml/u/Gohos",
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#183691;">"publicKeyPem"</span><span style="color:#323232;">: "-----BEGIN PUBLIC KEY-----</span><span style="color:#0086b3;">n</span><span style="color:#323232;">MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwDc9TbmcvR/eRx0zuXl5</span><span style="color:#0086b3;">n</span><span style="color:#323232;">qUu8vwcU3K1/70BqLdae/HtbjqXoHbVUI3exSVOTLVmPQ4oHjf6Lq5axyRRwihTh</span><span style="color:#0086b3;">n</span><span style="color:#323232;">bDgWYSBCqZ07L6VrgXVg2APCkFpX32XlbFbbMQDXf+kodj6YrzwelXEJ03eTDKaa</span><span style="color:#0086b3;">n</span><span style="color:#323232;">uFkFt0Uelu1k0AZVydGYT3U2iZ0jNGvpUMWQycTJ/k0r8n61JLuEMkvkVlH4ZDGb</span><span style="color:#0086b3;">n</span><span style="color:#323232;">GTjwjLRds/zawe8FAK/Grn+AW/UTmW/1kBLcqhkeRYzWhyrVy+/f9jf03s0rW92w</span><span style="color:#0086b3;">n</span><span style="color:#323232;">8PWM02AAE9edIpnK2XgElfkVWJenQzw7WDp045XPHMlUh5iizAJGcPAzdeEVNLq8</span><span style="color:#0086b3;">n</span><span style="color:#323232;">GQIDAQAB</span><span style="color:#0086b3;">n</span><span style="color:#323232;">-----END PUBLIC KEY-----</span><span style="color:#0086b3;">n</span><span style="color:#323232;">"
</span><span style="color:#323232;">  },
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"endpoints"</span><span style="color:#323232;">: {
</span><span style="color:#323232;">    </span><span style="font-weight:bold;color:#183691;">"sharedInbox"</span><span style="color:#323232;">: "https://lemmy.ml/inbox"
</span><span style="color:#323232;">  },
</span><span style="color:#323232;">  </span><span style="font-weight:bold;color:#183691;">"published"</span><span style="color:#323232;">: "2023-06-03T17:30:16.990908+00:00"
</span><span style="color:#323232;">}
</span>

This includes two important properties: inbox and outbox. Using ActivityPub I now know I can send you a message by POSTing a request to your inbox and I can fetch posts, comments, etc. you’ve made via your outbox.

Your public key is also included. This is how, if you sent me a message, I can verify that the message actually came from you.

That’s a very brief overview but I hope that helps!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • Ask_kbincafe
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines