Skip to content

Alice blocking Bob removes Bob from her followers collection

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:52:23.210452",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ#legacy-key-1",
    "owner": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjSkhSBAX9m2fdcpaRCWY\n9OmAOxmetdLAsBr5vp2TngDGpV8X3B5JIF1bJeYKAdVYOmzx2T+v0mr/n3YoySTP\n0gzuroeQyambD01U8sJqSCGKZ1deWqymk1IZ+QrsVNrDvJc9O97hrCsmnx5RBVxJ\nKveGAKwcL+9RWVnpZoBiIt63W26SYWhkJtUeSSktIrqMQkr4IyRWqrx5d7MIBnKj\nmfrKY8fBlHbbfC+uvrYEa+vaH8zazQ/6Df/Nrz4rU9cKFey9WqrLqwq7pJ3XDDiO\nr11+FSDDefc3ZKbXov4KsXuqAilcSP4kwqnQC1tphXaDfrRYs2lmfbQV3ETCZbqV\nOQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "type": "Person",
  "inbox": "http://abel/inbox/usfcBqR7VWVDPidsKco_iQ",
  "outbox": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/outbox",
  "followers": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/followers",
  "following": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/following",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@abel",
    "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
  ],
  "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:52:24.123773",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA#legacy-key-1",
    "owner": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1M0scsxNB6w4S4ZVE5J4\nCo0Nju40Ic7BHvCFKKqXDJExQYpuVIqw2bqMGPGNQnU7dLqom4m2dJUaA64veUMx\nLfjTqp8p8EMViUWlRs2zCyuckYYgrbULLYmyA4wmMaW8VJsYLbnOSUrWi5NHUy6O\nA8dEUxk3L7CKSIaOOxE1XEfDFxZsq0ARA2YJhkccx5oHcMCOz4N15gzSEBIpc8fm\nF+v8tekM5sWiFOZMpDtvRtIqeFF15BteeoaLScxwtMN6q3Dy++XnwexfZxjKsRAZ\nJ2ftTHJ3vcQQikUpBZUARa/0bFjau7TmZ4ISt7veBE020w+D+sBDoqr4T1eTlEaX\noQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "type": "Person",
  "inbox": "http://abel/inbox/4RVN2gnq1cU6tf5ANzpufg",
  "outbox": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/outbox",
  "followers": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/followers",
  "following": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/following",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@abel",
    "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

when: "Bob" sends "Alice" a Follow Activity

send.Bob.trigger.send_message
{
  "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
    "to": [
      "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
    ],
    "id": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
    "published": "2025-12-19T09:52:24Z",
    "object": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
  }
}
receive.Bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
      "to": [
        "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
      ],
      "id": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
      "published": "2025-12-19T09:52:24Z",
      "object": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
    }
  },
  "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "event_type": "outgoing",
  "history_id": null
}

when: "Alice" sends an Accept to this Follow Activity

receive.Alice.incoming.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
      "to": [
        "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
      ],
      "id": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
      "published": "2025-12-19T09:52:24Z",
      "object": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ"
    }
  },
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "event_type": "incoming",
  "history_id": null
}
send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
    "to": [
      "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
    ],
    "published": "2025-12-19T09:52:24Z",
    "object": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
    "id": "accept:000b98f5-ae23-4cae-8f56-74b3e1411b77"
  }
}
receive.Alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
      "to": [
        "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
      ],
      "published": "2025-12-19T09:52:24Z",
      "object": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
      "id": "accept:000b98f5-ae23-4cae-8f56-74b3e1411b77"
    }
  },
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "event_type": "outgoing",
  "history_id": null
}

when: "Alice" blocks "Bob"

send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Block",
    "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
    "to": [
      "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
    ],
    "id": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/879f7dcb435f4dd9",
    "published": "2025-12-19T09:52:25Z",
    "object": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
  }
}
receive.Bob.incoming.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
      "to": [
        "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
      ],
      "published": "2025-12-19T09:52:24Z",
      "object": "follow:8574ab08-3aea-4822-98b2-d52fb4ad8e3e",
      "id": "accept:000b98f5-ae23-4cae-8f56-74b3e1411b77"
    }
  },
  "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "event_type": "incoming",
  "history_id": null
}
receive.Alice.outgoing.Block
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Block",
      "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
      "to": [
        "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
      ],
      "id": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/879f7dcb435f4dd9",
      "published": "2025-12-19T09:52:25Z",
      "object": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA"
    }
  },
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "event_type": "outgoing",
  "history_id": null
}

then: The "followers" collection of "Alice" does not include "Bob"

send.Alice.request.fetch
{
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "uri": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/followers"
}
receive.Alice.response.fetch
{
  "actor": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ",
  "uri": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/followers",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "OrderedCollection",
    "id": "http://abel/actor/oABYzNqENhiLdLaU_yFJAQ/followers",
    "orderedItems": [],
    "totalItems": 0
  }
}

then: The "following" collection of "Bob" does not include "Alice"

send.Bob.request.fetch
{
  "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "uri": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/following"
}
receive.Bob.response.fetch
{
  "actor": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA",
  "uri": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/following",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "OrderedCollection",
    "id": "http://abel/actor/iHMUfEvmQZazBbv3GFmwLA/following",
    "orderedItems": [],
    "totalItems": 0
  }
}