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,
  "published": "2025-12-19T09:51:29.939571",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w#legacy-key-1",
    "owner": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtnKWxIpCrk3ELSOuNcRn\nElHRKcWJOp53RIMXyoTrbE/9KpGd2qwtwimMqPHH7XAaIHO5Atmkgw4YjwvkjwEH\nFMYyur7P9cPQkvLsXdUnXZfUMl3SM2egBGvDQn7vyY+hyLw5JWXvrBrQVwvBO7lO\nBsy2eVWcuMVcCJLMmmZmvipp08vNpsZ4eMZeXDL8mbgGlTwGNXjIN4WMh4tf689B\n9UT1a3ua+kUrpHJ9oIuWIIXH7ItEEjgjca+jOI5MJEeROQwJiA0WoLz9hG5e+r0n\nfwUUoKBfrGLCM7Ovc9PVauai6Nfb7rruefCpije6aF6BlKhbyC/xSPgkRAFC64XA\nCwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
  "type": "Person",
  "inbox": "http://abel/inbox/m9AABsDsHnEX8NCgKMI5yA",
  "outbox": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w/outbox",
  "followers": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w/followers",
  "following": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w/following",
  "preferredUsername": "alice",
  "name": "alice",
  "identifiers": [
    "acct:alice@abel",
    "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

given: "bob" created an actor on "abel" called "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": "2025-12-19T09:51:30.837796",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA#legacy-key-1",
    "owner": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ShMKwVNjPdD7rw1c6P6\nHAQNgqPscxHyZuRrOZAhVtAFQf7HVvnzEciAdwTN4esqUv8ooph/ovNjPxwjsOdy\n1SnyB5xxe/gBxMy4q9jIZN1jEPYBW1ZHii9QE4WvtyI8mdcPwK4MPz/En24pvFuX\n28PVI6s5LnRWRK9Yw0nM9oi9ZWzuDwqC568oeKihxNT3L0uezUog0TtlNk10LHZU\nVZRm0QbTiy8ousUOgS8joAojNUy25BvU/AcKgV+afMHa9wXNTI9X0/IrJHPIr4e2\nTAed5v1okPa0yIwmI571HowYYpXefLmT7zFLBFA3sGaa4keXAOAWz+AhC2OtZPzD\nRwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
  "type": "Person",
  "inbox": "http://abel/inbox/sa5ayf0TxSZO3VgWVWtFxA",
  "outbox": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA/outbox",
  "followers": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA/followers",
  "following": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA/following",
  "preferredUsername": "bob",
  "name": "bob",
  "identifiers": [
    "acct:bob@abel",
    "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

given: "alice" automatically accepts followers

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

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

send.bob.trigger.send_message
{
  "actor": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
    "to": [
      "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
    ],
    "id": "follow:0f7c33a8-1a0f-4e90-a207-c4d896f1d94f",
    "published": "2025-12-19T09:51:31Z",
    "object": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
  }
}
receive.bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
      "to": [
        "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
      ],
      "id": "follow:0f7c33a8-1a0f-4e90-a207-c4d896f1d94f",
      "published": "2025-12-19T09:51:31Z",
      "object": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
    }
  },
  "actor": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
  "event_type": "outgoing",
  "history_id": null
}

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

send.alice.request.fetch
{
  "actor": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
  "uri": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w/followers"
}
receive.alice.incoming.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA",
      "to": [
        "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
      ],
      "id": "follow:0f7c33a8-1a0f-4e90-a207-c4d896f1d94f",
      "published": "2025-12-19T09:51:31Z",
      "object": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w"
    }
  },
  "actor": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
  "event_type": "incoming",
  "history_id": null
}
receive.alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
      "to": [
        "http://abel/actor/FmDwr-TF-WxAInX5LR4PlA"
      ],
      "published": "2025-12-19T09:51:31Z",
      "object": "follow:0f7c33a8-1a0f-4e90-a207-c4d896f1d94f",
      "id": "http://abel/object/019b3605-8ca3-7a66-8a4c-a7decfe130d4"
    }
  },
  "actor": "http://abel/actor/wvnLfwsJRLlOgEMmtU3L-w",
  "event_type": "outgoing",
  "history_id": null
}