Skip to content

Alice updates her profile and her followers are notified

given: "Alice" created an actor on "banach" called "Alice" with username "Alice"

send.Alice.request.create_actor
{
  "base_url": "http://banach",
  "preferred_username": "Alice",
  "profile": {},
  "automatically_accept_followers": null,
  "name": null
}
receive.Alice.response.create_actor
{
  "attachment": null,
  "published": "2026-03-20T15:22:33.087937",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ#legacy-key-1",
    "owner": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiqZ9gKz1BcFAxuiL2WIU\n5MvgkMqTtQfaDlJ6yh3lEDNpsak3Yn6mEA6VeiEBPtm1B4vtlZBYMKHBilrh+oXM\n9TB++ESFNUPD0HMihFsiY0oCtuAZzWGTY3iFu3SYc5p07UwH8zYtiulSx+pBHcxz\n7V+khFV0HzND2ybmoeYYJgVheYzu2LqlRZ969P9gEySfecsL6J+arbeXkDU0coWu\nrQP8OR0OYXPwbyne78Fxpdc+7TO+E9BjxckJu9SagzxnZXaQ9dI9dc/carFqzVWs\nChcT4VUmun1iBFU/CzkYpM8P1g3Jc80/Y+EkKFpdbDhkCQbVlNarCrV5pXOda5qf\ntQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "type": "Person",
  "inbox": "http://banach/inbox/I_tR1kAMdLHrJW-QqRRwiw",
  "outbox": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/outbox",
  "followers": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/followers",
  "following": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/following",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@banach",
    "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

given: "Bob" created an actor on "abel" called "Bob" with username "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": "2026-03-20T15:22:33.665359",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA#legacy-key-1",
    "owner": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoFZ5Rx+Oj/echQaQXDsi\nvAv9RaSX4rHHMxbfTGnAn+OFibY4NnNrnDDkWELTe8blyyyMPhs0Z1wiG9Dribsj\nfi2pa7a7fVKm+etctRb+63VWk5QKZ8d2UKnCyklVEDo+Pm8OnE/Q2QF0PdoHP+W2\n8p4nM+ITemwDO5gmUHRskwkeBIF2WBkbUR3OYfE/M1EQjxQsjEXakdwJzG4jMume\naKTsF6RjDx7dpEi+jOQJCgZN4Mqwd5M4shpX78ygfWkRjS0QWY+qk9uDu1iQ6nTw\ngCrl73Gbb7b34my+BqG89YnNRIq20vQ4S82QvaMsFt4IKWL1PssaUhqeIYkwCNbs\nhQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
  "type": "Person",
  "inbox": "http://abel/inbox/ptfen1JAoMG5-7gqRZONqQ",
  "outbox": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA/outbox",
  "followers": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA/followers",
  "following": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA/following",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@abel",
    "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

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

send.Bob.trigger.send_message
{
  "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
    "to": [
      "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
    ],
    "id": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
    "published": "2026-03-20T15:22:33Z",
    "object": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
  }
}
receive.Bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
      "to": [
        "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
      ],
      "id": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
      "published": "2026-03-20T15:22:33Z",
      "object": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
    }
  },
  "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
  "event_type": "outgoing",
  "history_id": null
}
receive.Alice.incoming.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
      "to": [
        "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
      ],
      "id": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
      "published": "2026-03-20T15:22:33Z",
      "object": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
    }
  },
  "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "event_type": "incoming",
  "history_id": null
}

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

send.Alice.trigger.send_message
{
  "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
    "to": [
      "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA"
    ],
    "published": "2026-03-20T15:22:34Z",
    "object": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
    "id": "accept:1a3b03bc-30c1-4808-bdfa-0e6842444d04"
  }
}
receive.Alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
      "to": [
        "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA"
      ],
      "published": "2026-03-20T15:22:34Z",
      "object": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
      "id": "accept:1a3b03bc-30c1-4808-bdfa-0e6842444d04"
    }
  },
  "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "event_type": "outgoing",
  "history_id": null
}
receive.Bob.incoming.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
      "to": [
        "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA"
      ],
      "published": "2026-03-20T15:22:34Z",
      "object": "follow:14934895-e04d-4913-91db-ebdb27aed0a8",
      "id": "accept:1a3b03bc-30c1-4808-bdfa-0e6842444d04"
    }
  },
  "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
  "event_type": "incoming",
  "history_id": null
}

when: "Alice" updates her profile

send.Alice.trigger.update_actor
{
  "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "profile": {
    "summary": "I love cows"
  },
  "autoFollow": null,
  "actions": []
}
receive.Alice.outgoing.Update
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Update",
      "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/followers"
      ],
      "published": "2026-03-20T15:22:34Z",
      "object": {
        "attachment": null,
        "published": "2026-03-20T15:22:33.087937",
        "@context": [
          "https://www.w3.org/ns/activitystreams",
          "https://w3id.org/security/v1",
          {
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
          }
        ],
        "publicKey": {
          "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ#legacy-key-1",
          "owner": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
          "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiqZ9gKz1BcFAxuiL2WIU\n5MvgkMqTtQfaDlJ6yh3lEDNpsak3Yn6mEA6VeiEBPtm1B4vtlZBYMKHBilrh+oXM\n9TB++ESFNUPD0HMihFsiY0oCtuAZzWGTY3iFu3SYc5p07UwH8zYtiulSx+pBHcxz\n7V+khFV0HzND2ybmoeYYJgVheYzu2LqlRZ969P9gEySfecsL6J+arbeXkDU0coWu\nrQP8OR0OYXPwbyne78Fxpdc+7TO+E9BjxckJu9SagzxnZXaQ9dI9dc/carFqzVWs\nChcT4VUmun1iBFU/CzkYpM8P1g3Jc80/Y+EkKFpdbDhkCQbVlNarCrV5pXOda5qf\ntQIDAQAB\n-----END PUBLIC KEY-----\n"
        },
        "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
        "type": "Person",
        "inbox": "http://banach/inbox/I_tR1kAMdLHrJW-QqRRwiw",
        "outbox": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/outbox",
        "followers": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/followers",
        "following": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/following",
        "preferredUsername": "Alice",
        "name": "Alice",
        "summary": "I love cows",
        "identifiers": [
          "acct:Alice@banach",
          "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
        ],
        "endpoints": {
          "sharedInbox": "http://banach/shared_inbox"
        },
        "manuallyApprovesFollowers": true
      },
      "id": "http://banach/object/019d0bd7-54ab-74be-9d25-73d7da44e666"
    }
  },
  "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
  "event_type": "outgoing",
  "history_id": null
}
receive.Bob.incoming.Update
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Update",
      "actor": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/followers"
      ],
      "published": "2026-03-20T15:22:34Z",
      "object": {
        "attachment": null,
        "published": "2026-03-20T15:22:33.087937",
        "@context": [
          "https://www.w3.org/ns/activitystreams",
          "https://w3id.org/security/v1",
          {
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
          }
        ],
        "publicKey": {
          "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ#legacy-key-1",
          "owner": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
          "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiqZ9gKz1BcFAxuiL2WIU\n5MvgkMqTtQfaDlJ6yh3lEDNpsak3Yn6mEA6VeiEBPtm1B4vtlZBYMKHBilrh+oXM\n9TB++ESFNUPD0HMihFsiY0oCtuAZzWGTY3iFu3SYc5p07UwH8zYtiulSx+pBHcxz\n7V+khFV0HzND2ybmoeYYJgVheYzu2LqlRZ969P9gEySfecsL6J+arbeXkDU0coWu\nrQP8OR0OYXPwbyne78Fxpdc+7TO+E9BjxckJu9SagzxnZXaQ9dI9dc/carFqzVWs\nChcT4VUmun1iBFU/CzkYpM8P1g3Jc80/Y+EkKFpdbDhkCQbVlNarCrV5pXOda5qf\ntQIDAQAB\n-----END PUBLIC KEY-----\n"
        },
        "id": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ",
        "type": "Person",
        "inbox": "http://banach/inbox/I_tR1kAMdLHrJW-QqRRwiw",
        "outbox": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/outbox",
        "followers": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/followers",
        "following": "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ/following",
        "preferredUsername": "Alice",
        "name": "Alice",
        "summary": "I love cows",
        "identifiers": [
          "acct:Alice@banach",
          "http://banach/actor/U3JnYcrWBMtOeZxEA4q_EQ"
        ],
        "endpoints": {
          "sharedInbox": "http://banach/shared_inbox"
        },
        "manuallyApprovesFollowers": true
      },
      "id": "http://banach/object/019d0bd7-54ab-74be-9d25-73d7da44e666"
    }
  },
  "actor": "http://abel/actor/vfeeBHeoQVjMzudHFpSyCA",
  "event_type": "incoming",
  "history_id": null
}

then: "Bob" receives an activity

then: the received activity is of type "Update"