Skip to content

Alice 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,
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1"
  ],
  "publicKey": {
    "id": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg#legacy-key-1",
    "owner": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtYnUYO/izqBeatCwY1/P\nosCfHx4AvXNVf7j/xb/3Xq3MU5visN/o8xPFIJ8FNdh2WzoORPEwtj+bqsaluZak\nBy+sBqsjdXl6E0a3mMC0wCYbEVXNYVGLnKzW844k66C2vuKJDz4XDcXRCXa+kdOL\nYALXW4XIFGORW/gZJNozPdtZroznrklhUFEmO3xSj0APsQrkQG15vQ0tL3yq5QON\njoCL/7Y6NQ7fO9y8pzF4m4cmgyLiwbD47r8CewE+wUtM8SuSCQ5GI+wftMgfSJJQ\n2rA9eGor+bCjohXB4Ko9em0ABZx7BebMq+jN+Gabjk/lG/y7TEVGJG+X7JeI0Cki\nNwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "type": "Person",
  "inbox": "http://abel/inbox/ge0XwAsL98ow_Z8dEB37AQ",
  "outbox": "http://abel/outbox/ZJCQYjaTWGh4PURJHh5Vpw",
  "followers": "http://abel/followers/Toe79p9xyf2Y2Xw0pAooRQ",
  "following": "http://abel/following/pa7ScoZvGEyE8j8OJY4rSA",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@abel",
    "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
  ],
  "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/0t30cteoZcUH2iZBlrlneA#legacy-key-1",
    "owner": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFSeqXMH6PxIgoadjGka\nebLCUgzgtpiB4APnBwZLhRDPFPyUc29d/cspabQyqHL4qaJgwmk341E76TVQEU9O\nxo5ul4ersrNfv1MG9MPxJf1ROJKp4sd/nOVsU/gqacko0Barkf1BK52JwcYDPEAs\ngZCOFEjTbyP1R6ZpG6o8LyfpuOGCBLYfQCylH1bQhKjHVNhx5kotMA3FM0YE9Dvo\nPDpC2siW51uqwY7EUaXRL5IHhmmYMeh0tOxVXUbfrzV+j+BG9hmtPmSKD1gB8zi4\nY057QZ0gUi5Q6W3WM3LEls6jWjUPHh5QSc0wWwuU9TcUIzWkLlP0lbE8oS9cDA6H\nEQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "type": "Person",
  "inbox": "http://banach/inbox/NLng_cBaCdlXiGbMK3s-tg",
  "outbox": "http://banach/outbox/FiuGhnWBfIQYHvUYa5OucA",
  "followers": "http://banach/followers/4VLktzJAqnOPtS-3zwHH8Q",
  "following": "http://banach/following/KRwcn75zo5jkAOr3B0YkdQ",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@banach",
    "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/shared_inbox"
  }
}

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

send.Bob.trigger.send_message
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
    "to": [
      "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
    ],
    "id": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
    "published": "2025-02-23T08:46:29Z",
    "object": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
  }
}
receive.Bob.outgoing
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "event_type": "outgoing",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
      "to": [
        "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
      ],
      "id": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "published": "2025-02-23T08:46:29Z",
      "object": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
    },
    "recipients": {
      "recipients": [
        "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
      ],
      "public": false
    }
  }
}
receive.Alice.incoming
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "event_type": "incoming",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
      "to": [
        "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
      ],
      "id": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "published": "2025-02-23T08:46:29Z",
      "object": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
    },
    "recipients": {
      "recipients": [
        "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg"
      ],
      "public": false
    }
  }
}

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

send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
    "to": [
      "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
    ],
    "published": "2025-02-23T08:46:29Z",
    "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
    "id": "accept:08a1d294-2a68-4410-9363-33af66a703f9"
  }
}
receive.Alice.outgoing
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "event_type": "outgoing",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
      "to": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "published": "2025-02-23T08:46:29Z",
      "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "id": "accept:08a1d294-2a68-4410-9363-33af66a703f9"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "public": false
    }
  }
}
receive.Bob.incoming
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "event_type": "incoming",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
      "to": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "published": "2025-02-23T08:46:29Z",
      "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "id": "accept:08a1d294-2a68-4410-9363-33af66a703f9"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "public": false
    }
  }
}

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

send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Reject",
    "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
    "to": [
      "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
    ],
    "published": "2025-02-23T08:46:30Z",
    "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
    "id": "reject:683b444f-f829-4dce-947d-f43895d9c3c6"
  }
}
receive.Alice.outgoing
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "event_type": "outgoing",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Reject",
      "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
      "to": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "published": "2025-02-23T08:46:30Z",
      "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "id": "reject:683b444f-f829-4dce-947d-f43895d9c3c6"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "public": false
    }
  }
}
receive.Bob.incoming
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "event_type": "incoming",
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Reject",
      "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
      "to": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "published": "2025-02-23T08:46:30Z",
      "object": "follow:8f4f5def-7547-43fd-91bd-2009dec745cc",
      "id": "reject:683b444f-f829-4dce-947d-f43895d9c3c6"
    },
    "recipients": {
      "recipients": [
        "http://banach/actor/0t30cteoZcUH2iZBlrlneA"
      ],
      "public": false
    }
  }
}

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

send.Alice.request.fetch
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "uri": "http://abel/followers/Toe79p9xyf2Y2Xw0pAooRQ"
}
receive.Alice.response.fetch
{
  "actor": "http://abel/actor/Tt7RXECcU8aTVI7OM3b-zg",
  "uri": "http://abel/followers/Toe79p9xyf2Y2Xw0pAooRQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://abel/followers/Toe79p9xyf2Y2Xw0pAooRQ",
    "type": "OrderedCollection"
  }
}

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

send.Bob.request.fetch
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "uri": "http://banach/following/KRwcn75zo5jkAOr3B0YkdQ"
}
receive.Bob.response.fetch
{
  "actor": "http://banach/actor/0t30cteoZcUH2iZBlrlneA",
  "uri": "http://banach/following/KRwcn75zo5jkAOr3B0YkdQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "id": "http://banach/following/KRwcn75zo5jkAOr3B0YkdQ",
    "type": "OrderedCollection"
  }
}