Skip to content

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
  }
}