# Welcome to the experimental SoAP agent! It is an agent that provides a layer of ActivityPub on top of Solid. It's experimental and may change at any time. This is how you need to set up your Pod in order to make it work. If your Pod root storage is at subpath (e.g. https://mypod.example/username/), then you're out of luck. Get a subdomain-based pod, e.g. at https://solidcommunity.net. If you want a config that is customized to your needs, provide some or all of the following values as query parameters (all except username should be URIs encoded with encodeURIComponent) - username - webid - actor - pod - pubkey ## .well-known/webfinger You need to save .well-known endpoint at the root of your pod and subdomain. url: https://username.mypod.example/.well-known/webfinger access: public content-type: application/json body: { "subject": "acct:username@username.mypod.example", "links": [ { "rel": "self", "type": "application/activity+json", "href": "https://username.mypod.example/soap-opera/profile/actor" } ] } compact: {"subject":"acct:username@username.mypod.example","links":[{"rel":"self","type":"application/activity+json","href":"https://username.mypod.example/soap-opera/profile/actor"}]} ## actor You need to save actor to your pod. url: https://username.mypod.example/soap-opera/profile/actor access: public content-type: application/activity+json body: { "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", "https://w3id.org/security/data-integrity/v1", "https://www.w3.org/ns/did/v1", "https://w3id.org/security/multikey/v1", { "soap": "https://soap.example/activitypub#", "alsoKnownAs": { "@id": "as:alsoKnownAs", "@type": "@id" }, "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", "movedTo": { "@id": "as:movedTo", "@type": "@id" }, "toot": "http://joinmastodon.org/ns#", "Emoji": "toot:Emoji", "featured": { "@id": "toot:featured", "@type": "@id" }, "featuredTags": { "@id": "toot:featuredTags", "@type": "@id" }, "discoverable": "toot:discoverable", "suspended": "toot:suspended", "memorial": "toot:memorial", "indexable": "toot:indexable", "schema": "http://schema.org#", "PropertyValue": "schema:PropertyValue", "value": "schema:value", "misskey": "https://misskey-hub.net/ns#", "_misskey_followedMessage": "misskey:_misskey_followedMessage", "isCat": "misskey:isCat" } ], "id": "https://username.mypod.example/soap-opera/profile/actor", "type": "Person", "preferredUsername": "username", "inbox": "https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/inbox", "outbox": "https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/outbox", "followers": "https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/followers", "following": "https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/following", "discoverable": true, "indexable": true, "soap:isActorOf": "https://username.mypod.example/profile/card#me", "soap:storage": "https://username.mypod.example/soap-opera/", "publicKey": { "id": "https://username.mypod.example/soap-opera/profile/actor#main-key", "owner": "https://username.mypod.example/soap-opera/profile/actor", "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nyour-base64-encoded-public-key\n-----END PUBLIC KEY-----" } } compact: {"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://w3id.org/security/data-integrity/v1","https://www.w3.org/ns/did/v1","https://w3id.org/security/multikey/v1",{"soap":"https://soap.example/activitypub#","alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","movedTo":{"@id":"as:movedTo","@type":"@id"},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","featured":{"@id":"toot:featured","@type":"@id"},"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},"discoverable":"toot:discoverable","suspended":"toot:suspended","memorial":"toot:memorial","indexable":"toot:indexable","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value","misskey":"https://misskey-hub.net/ns#","_misskey_followedMessage":"misskey:_misskey_followedMessage","isCat":"misskey:isCat"}],"id":"https://username.mypod.example/soap-opera/profile/actor","type":"Person","preferredUsername":"username","inbox":"https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/inbox","outbox":"https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/outbox","followers":"https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/followers","following":"https://ap.mrkvon.org/users/https%3A%2F%2Fusername.mypod.example%2Fsoap-opera%2Fprofile%2Factor/following","discoverable":true,"indexable":true,"soap:isActorOf":"https://username.mypod.example/profile/card#me","soap:storage":"https://username.mypod.example/soap-opera/","publicKey":{"id":"https://username.mypod.example/soap-opera/profile/actor#main-key","owner":"https://username.mypod.example/soap-opera/profile/actor","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nyour-base64-encoded-public-key\n-----END PUBLIC KEY-----"}} ## webId url: https://username.mypod.example/profile/card#me access: public content-type: text/turtle You need to add triples: (e.g. using Solid n3-patch) . (This allows the agent to act on your behalf, so make sure you trust the agent.) . (This makes sure that actor and webId are safely linked together) ## private key url: https://username.mypod.example/soap-opera/keys/private.pem access: only you (and agent) content-type: text/plain (or similar) body: Your private key in PEM format like -----BEGIN PRIVATE KEY----- [base64 data] -----END PRIVATE KEY-----