Skip to content

Alice automatically accepts followers and Bob follows Alice

given: "alice" created an actor on "abel" called "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,
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1"
  ],
  "publicKey": {
    "id": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ#legacy-key-1",
    "owner": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqKn0vE+PrarnMBjGZm+X\n5+zglXvPGtzt0NhTWh/LJgVSs0JPuxS2u82BQ1TB6tqVLQyoazV8WNFJjjmAGC+D\n57Q+r/Rvora1C6B2jX+DviZP+zKIM7gI1xfuObFEZqFIg5Dm4eqFppWpm4P2n8WZ\nWJJ38o5/8BHtKujqnVJBdD8lH+d/ESjUYUKmhmSfA+Nq8UU55mwri+LKKCyCz9Uf\nFvNxikoo6qFVzWELaZLMrI1lBwO6q7h04ndoGZXM43tqyzmB/1TWL3S1HLEde1BW\n31cZEBcALwnYJnZgXRV4ef9k8eWN0qIqphubZTNfVbU5jQecDHsrX7JLoS/WOV/Z\ntwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "type": "Person",
  "inbox": "http://abel/inbox/hfD7JZ7mao_lpmHv9hAz6Q",
  "outbox": "http://abel/outbox/ossczs2ia4aA2ZrGvlSu_g",
  "followers": "http://abel/followers/FJIjupoDm3J8AeuIUm6hEg",
  "following": "http://abel/following/e8pikFbIau8rVeMwNy_csw",
  "preferredUsername": "alice",
  "name": "alice",
  "identifiers": [
    "acct:alice@abel",
    "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  }
}

given: "bob" created an actor on "banach" called "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,
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1"
  ],
  "publicKey": {
    "id": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ#legacy-key-1",
    "owner": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkONjN58EUqM46rORW8nE\nSh0DpaxVqEfrGlnI1Mxi+16Uj8YSbSSiU2YhVKnE3ciTyfKkwbHppQNHoFm09MrL\n4wtsGQqHsmckJN41Gg/zkNiRwcqOkEUylkXqqQtKfcLSl/X/+HbMphnnK6ueEAKb\npo52meJtrqAnvAon2FZPeK6Bt0uSPiRgUt3xUycGtlgX6MuHGk2qE5cENUONWA2g\nCqEjR1w8mVN+UI8ithcIETpZi/nfU65yJWmwAdbWdKBlJO4Bew4jPF7a5FVgfi1W\nz2p8OKHpff4DQHMsg+dEq959ivqs45n4jU0p6LIMHwlYqovCYKKKN3N4OoiFNLHQ\nTwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "type": "Person",
  "inbox": "http://banach/inbox/prq0vLI5t0w4rdq7i1S7pw",
  "outbox": "http://banach/outbox/Ex4ESVtyu1GXe90aULgSxA",
  "followers": "http://banach/followers/vncCNif9xvyj02GDz-OGZQ",
  "following": "http://banach/following/vEXuQRxhLFsxNDXDejWNsw",
  "preferredUsername": "bob",
  "name": "bob",
  "identifiers": [
    "acct:bob@banach",
    "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/shared_inbox"
  }
}

given: "alice" automatically accepts followers

send.alice.trigger.update_actor
{
  "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "autoFollow": true
}

when: "bob" sends "alice" a Follow Activity

send.bob.trigger.send_message
{
  "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
    "to": [
      "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
    ],
    "id": "follow:2a3f3681-4ee0-4299-90d1-f2fd081f964c",
    "published": "2025-02-23T08:46:08Z",
    "object": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
  }
}
receive.bob.outgoing
{
  "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "event_type": "outgoing",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
      "to": [
        "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
      ],
      "id": "follow:2a3f3681-4ee0-4299-90d1-f2fd081f964c",
      "published": "2025-02-23T08:46:08Z",
      "object": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
    },
    "recipients": {
      "recipients": [
        "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
      ],
      "public": false
    }
  }
}
receive.alice.incoming
{
  "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "event_type": "incoming",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
      "to": [
        "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
      ],
      "id": "follow:2a3f3681-4ee0-4299-90d1-f2fd081f964c",
      "published": "2025-02-23T08:46:08Z",
      "object": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
    },
    "recipients": {
      "recipients": [
        "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
      ],
      "public": false
    }
  }
}
receive.alice.outgoing
{
  "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "event_type": "outgoing",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
      "to": [
        "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
      ],
      "published": "2025-02-23T08:46:08Z",
      "object": "follow:2a3f3681-4ee0-4299-90d1-f2fd081f964c",
      "id": "http://abel/object/019531fc-3b8f-7989-9e26-de829e05b4aa"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
      ],
      "public": false
    }
  }
}
receive.bob.incoming
{
  "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "event_type": "incoming",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
      "to": [
        "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
      ],
      "published": "2025-02-23T08:46:08Z",
      "object": "follow:2a3f3681-4ee0-4299-90d1-f2fd081f964c",
      "id": "http://abel/object/019531fc-3b8f-7989-9e26-de829e05b4aa"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
      ],
      "public": false
    }
  }
}

then: The "followers" collection of "alice" contains "bob"

send.alice.request.fetch
{
  "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "uri": "http://abel/followers/FJIjupoDm3J8AeuIUm6hEg"
}
receive.alice.response.fetch
{
  "actor": "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ",
  "uri": "http://abel/followers/FJIjupoDm3J8AeuIUm6hEg",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://abel/followers/FJIjupoDm3J8AeuIUm6hEg",
    "type": "OrderedCollection",
    "totalItems": 1,
    "orderedItems": [
      "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ"
    ]
  }
}

then: The "following" collection of "bob" contains "alice"

send.bob.request.fetch
{
  "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "uri": "http://banach/following/vEXuQRxhLFsxNDXDejWNsw"
}
receive.bob.response.fetch
{
  "actor": "http://banach/actor/drXdWKT44jmkXfOqgrh0wQ",
  "uri": "http://banach/following/vEXuQRxhLFsxNDXDejWNsw",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://banach/following/vEXuQRxhLFsxNDXDejWNsw",
    "type": "OrderedCollection",
    "totalItems": 1,
    "orderedItems": [
      "http://abel/actor/Pno0jgsy3NhJAgW-GRaRQQ"
    ]
  }
}