Bob sends Alice a Follow request, which is not answered yet¶
given: "alice" created an actor on "abel" called "alice" with username "alice"¶
send.alice.request.create_actor
{
"base_url": "http://abel",
"preferred_username": "alice",
"profile": {},
"automatically_accept_followers": null,
"name": null
}
receive.alice.response.create_actor
{
"attachment": null,
"published": "2026-03-20T15:21:59.192647",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw#legacy-key-1",
"owner": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzRKCrLoDp8liIiZVvYv3\nqY0jsJZAFsX+IvJzYxlaskTnE0TqynJ2uIQQzBasZpTkqLISpduKDRCYHKCPHuu4\nKwNjBs7g0FngoqwyzSUIMIdbl5erAekFtY+qFUPCRX7lOkd3ikc/M3ADcCrendJk\nQEYpqeVEYgu0rWL1CLMJtFhThR9kvs+Db/pCMMUXOTEPKFUpPTDROv/7YUv215cC\nMZYVDJDGpFnb9O6QGs2Rmyp7vxOxjm/h5FFF8B7PGtmAK95r2E/JS+0+iIErFzF4\nROiep4BEc0rCG+2MbbjGRPuVJEDKSBcU/nWiTf+xRtqZZdizzWcwv1//DPstM3bu\nuQIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw",
"type": "Person",
"inbox": "http://abel/inbox/2T0WXuJd4VQSdZKqLeQO_g",
"outbox": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/outbox",
"followers": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/followers",
"following": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/following",
"preferredUsername": "alice",
"name": "alice",
"identifiers": [
"acct:alice@abel",
"http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
],
"endpoints": {
"sharedInbox": "http://abel/shared_inbox"
},
"manuallyApprovesFollowers": true
}
given: "bob" created an actor on "banach" called "bob" with username "bob"¶
send.bob.request.create_actor
{
"base_url": "http://banach",
"preferred_username": "bob",
"profile": {},
"automatically_accept_followers": null,
"name": null
}
receive.bob.response.create_actor
{
"attachment": null,
"published": "2026-03-20T15:21:59.762040",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://banach/actor/en9avh199wpcIh2GYBV7NA#legacy-key-1",
"owner": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwBiBOSozvuOVATOJtzxK\nsJ5c55q8KUUZIs1lku1pEc2NKKJDFm7Z25QDeLJNsJERIuI2rKu6Got+hC4/RKHA\nANXgL5NymDJqDhUhPQMWIC358jTygtZYM6XnSMVuvM7veLJV+SfPBhF6kXJuGL2K\nAu9Dz4fubPT1nV3NjRPKkH50GRMM6cFEggWH9FxqIn0M4Y15l1o4rFDZpeyOUMvP\nkQ24ELBuXdQik71/dhaJ6z2vF08pm5+feu7ZSi+3khirxR6CjdWltJf5brBJf/1v\nghiaMRl9k+BTF6Rrami0uWgw6aL6W057UG94NznwcluBWQV4LohIUZFtGXWScLoL\nEwIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"type": "Person",
"inbox": "http://banach/inbox/4dDrIleUZfmoWYpiUwPD-w",
"outbox": "http://banach/actor/en9avh199wpcIh2GYBV7NA/outbox",
"followers": "http://banach/actor/en9avh199wpcIh2GYBV7NA/followers",
"following": "http://banach/actor/en9avh199wpcIh2GYBV7NA/following",
"preferredUsername": "bob",
"name": "bob",
"identifiers": [
"acct:bob@banach",
"http://banach/actor/en9avh199wpcIh2GYBV7NA"
],
"endpoints": {
"sharedInbox": "http://banach/shared_inbox"
},
"manuallyApprovesFollowers": true
}
when: "bob" sends "alice" a Follow Activity¶
send.bob.trigger.send_message
{
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"to": [
"http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
],
"id": "follow:4897dc56-bddb-449e-b414-4d604bf3ae93",
"published": "2026-03-20T15:21:59Z",
"object": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
}
}
receive.bob.outgoing.Follow
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"to": [
"http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
],
"id": "follow:4897dc56-bddb-449e-b414-4d604bf3ae93",
"published": "2026-03-20T15:21:59Z",
"object": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
}
},
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"event_type": "outgoing",
"history_id": null
}
receive.alice.incoming.Follow
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"to": [
"http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
],
"id": "follow:4897dc56-bddb-449e-b414-4d604bf3ae93",
"published": "2026-03-20T15:21:59Z",
"object": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw"
}
},
"actor": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw",
"event_type": "incoming",
"history_id": null
}
then: The "followers" collection of "alice" does not include "bob"¶
send.alice.request.fetch
{
"actor": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw",
"uri": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/followers"
}
receive.alice.response.fetch
{
"actor": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw",
"uri": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/followers",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "OrderedCollection",
"id": "http://abel/actor/bHTwSi1IUgXOZyQoVWwpqw/followers",
"orderedItems": [],
"totalItems": 0
}
}
then: The "following" collection of "bob" does not include "alice"¶
send.bob.request.fetch
{
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"uri": "http://banach/actor/en9avh199wpcIh2GYBV7NA/following"
}
receive.bob.response.fetch
{
"actor": "http://banach/actor/en9avh199wpcIh2GYBV7NA",
"uri": "http://banach/actor/en9avh199wpcIh2GYBV7NA/following",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "OrderedCollection",
"id": "http://banach/actor/en9avh199wpcIh2GYBV7NA/following",
"orderedItems": [],
"totalItems": 0
}
}