Alice automatically accepts followers and Bob follows Alice¶
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:22:16.077930",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ#legacy-key-1",
"owner": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzrXeHrxOBeFO+HKpg6/B\nXACFvE4gKDbLWkR64SjI1IlF6nqH0zpU5MUpYMw/vFTnF0p5Y4+dJ6UKZSbPzWR8\nfunoFtdoPk6zmhkypykklVj+Vq6oVAAHcDM95UaetPZJVQKQZhTN74Gv+s6FzgGV\nmttQFfmhEMP7st6F/pLIqZ9/e4eBX1W1HDODNUDAdvPB2yuAgf+1E+grmxnfEGLT\n2nwVgppGvquIigc6WqJxo2U2a5+Q6peu9mcd2sIwvhhlnN9ALMWqhjeqe7DGqVuS\nH9mVxhSuBqLWGcD/dYoCSNe7VcVvLncFjXm5ngd2Hhf/S1Zi2eFb724N5RuHKHCJ\nMQIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"type": "Person",
"inbox": "http://abel/inbox/A7hmAMrtapa-BogmxB7cBw",
"outbox": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/outbox",
"followers": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/followers",
"following": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/following",
"preferredUsername": "alice",
"name": "alice",
"identifiers": [
"acct:alice@abel",
"http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
],
"endpoints": {
"sharedInbox": "http://abel/shared_inbox"
},
"manuallyApprovesFollowers": true
}
given: "bob" created an actor on "abel" called "bob" with username "bob"¶
send.bob.request.create_actor
{
"base_url": "http://abel",
"preferred_username": "bob",
"profile": {},
"automatically_accept_followers": null,
"name": null
}
receive.bob.response.create_actor
{
"attachment": null,
"published": "2026-03-20T15:22:16.773885",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://abel/actor/FBQerZuajU_7eXthfxZV_g#legacy-key-1",
"owner": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArL78PBY+8hQcTV7HGlyc\nPzyNLYvM1ESUgvVmddKryhhkz1jRdy6aJ4wj1ewN2MfwiodyB5PUpW73BhbptVrL\numCRTE4nuDYjpheaHeDpZmSFyKwwqei1l3e7XUXvhcGYk5fea7+weXLMJcvLvzY2\nTu35+8sMtfUdtmnyvvSGEd3kdKcp6l//bFW/DFCvY6kDuvoVwDQHQmPswwr4lU+v\naD7wJuVSsjPewL786o67Mo/4mobDQuX3Vr6bVk2N9llhYMKcyw9vIn8t1BVJI01l\nGhqpve2bf9BsPyUEKPcqnmKFCMdrxuFwGW8GLYGvVzmV21hVI7Zw0uqZGNyTDser\ngQIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"type": "Person",
"inbox": "http://abel/inbox/91czC6lzLCb11QP8GuktzQ",
"outbox": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/outbox",
"followers": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/followers",
"following": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/following",
"preferredUsername": "bob",
"name": "bob",
"identifiers": [
"acct:bob@abel",
"http://abel/actor/FBQerZuajU_7eXthfxZV_g"
],
"endpoints": {
"sharedInbox": "http://abel/shared_inbox"
},
"manuallyApprovesFollowers": true
}
given: "alice" automatically accepts followers¶
send.alice.trigger.update_actor
{
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"autoFollow": true
}
when: "bob" sends "alice" a Follow Activity¶
send.bob.trigger.send_message
{
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"to": [
"http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
],
"id": "follow:5ad4c89d-59ea-4114-9179-ee082dc83d7e",
"published": "2026-03-20T15:22:17Z",
"object": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
}
}
receive.bob.outgoing.Follow
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"to": [
"http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
],
"id": "follow:5ad4c89d-59ea-4114-9179-ee082dc83d7e",
"published": "2026-03-20T15:22:17Z",
"object": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
}
},
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"event_type": "outgoing",
"history_id": null
}
receive.alice.incoming.Follow
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"to": [
"http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
],
"id": "follow:5ad4c89d-59ea-4114-9179-ee082dc83d7e",
"published": "2026-03-20T15:22:17Z",
"object": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
}
},
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"event_type": "incoming",
"history_id": null
}
then: The "followers" collection of "alice" contains "bob"¶
receive.alice.outgoing.Accept
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"to": [
"http://abel/actor/FBQerZuajU_7eXthfxZV_g"
],
"published": "2026-03-20T15:22:17Z",
"object": "follow:5ad4c89d-59ea-4114-9179-ee082dc83d7e",
"id": "http://abel/object/019d0bd7-122d-7841-8530-38d9591cf4a4"
}
},
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"event_type": "outgoing",
"history_id": null
}
send.alice.request.fetch
{
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"uri": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/followers"
}
receive.bob.incoming.Accept
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"to": [
"http://abel/actor/FBQerZuajU_7eXthfxZV_g"
],
"published": "2026-03-20T15:22:17Z",
"object": "follow:5ad4c89d-59ea-4114-9179-ee082dc83d7e",
"id": "http://abel/object/019d0bd7-122d-7841-8530-38d9591cf4a4"
}
},
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"event_type": "incoming",
"history_id": null
}
receive.alice.response.fetch
{
"actor": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ",
"uri": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/followers",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "OrderedCollection",
"id": "http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ/followers",
"orderedItems": [
"http://abel/actor/FBQerZuajU_7eXthfxZV_g"
],
"totalItems": 1
}
}
then: The "following" collection of "bob" contains "alice"¶
send.bob.request.fetch
{
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"uri": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/following"
}
receive.bob.response.fetch
{
"actor": "http://abel/actor/FBQerZuajU_7eXthfxZV_g",
"uri": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/following",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "OrderedCollection",
"id": "http://abel/actor/FBQerZuajU_7eXthfxZV_g/following",
"orderedItems": [
"http://abel/actor/-PC7Mfgaxf6PFapvWzZMXQ"
],
"totalItems": 1
}
}