Skip to content

Publish Activity Works

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:49:41.781812",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA#legacy-key-1",
    "owner": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAveg0M6rFhMRgXo9kZMa+\nlPlBXHr79yzD0NCHQEjs1JSyD7KLjjmr+s/nVQ23Uri4gL1f22ruR1eABJYPhvTV\nxu29Pk1RAxo7Bp/GLy8Pnj8YVmDRPPVbiYuBFmrctRAMqZw3fAzPTfgreqGBZlvu\nAH91XMueK7E4KGmb7BimztvJt2aC7JruWG3qhzMhoJpebqqiyWcow+8SjueW3PMX\nMGfEXUjsJbnuh/tD18j5AX154Ee97K2g4VwnbG41Jwg/BMtfhMNiSHNDo1qBP09A\nKkCbLmz6KPXkHeEPdgJFj3OodVvjJcL4YeClKHF7jMFe05asQtplXviDVKi4M8b/\nwQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "type": "Person",
  "inbox": "http://abel/inbox/JRcByz0izroTE1IXXd3fUA",
  "outbox": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/outbox",
  "followers": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/followers",
  "following": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/following",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@abel",
    "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
  ],
  "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:49:42.598422",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w#legacy-key-1",
    "owner": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxqpIM/Io+PP7zuG4nM6I\nBJmRtyBRfEVN0pT+/F212QI+x12+x1noaFHWZwCD7p8g4RQ+7Fc2W9FgzUi7Rmj0\nsCc14m810XYDBpnRu8nyvvs+7CZeUXDez6ynIk/dH6rakjcHi87Z4/N3hIFqKv2r\nmjjLKWPY/0yYE6aFTxepr+o7qqchn7GE0Xx6up1zKEWByI9jZMccRAPrP1obWEXa\nWPUbRmCTn/OqTJOtiVw5heqZSdqBlgC1hvxovTF+8gZ1+ituwWmHQr+Hsvxesl5J\nDgbGBD9xDvzP2JhZ8BuzMH7OJjKmJkA5ZPznmczFv1gMhe/m9a1sFPAvDVJkSMrw\nPwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "type": "Person",
  "inbox": "http://abel/inbox/pQJXcPlUFyrouhHrisWFBw",
  "outbox": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w/outbox",
  "followers": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w/followers",
  "following": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w/following",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@abel",
    "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

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

send.Bob.trigger.send_message
{
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
    "to": [
      "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
    ],
    "id": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
    "published": "2025-12-19T09:49:42Z",
    "object": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
  }
}
receive.Bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
      "to": [
        "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
      ],
      "id": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
      "published": "2025-12-19T09:49:42Z",
      "object": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
    }
  },
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "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/uGcc4H_SA9IRsotjrcQu3w",
      "to": [
        "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
      ],
      "id": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
      "published": "2025-12-19T09:49:42Z",
      "object": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA"
    }
  },
  "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "event_type": "incoming",
  "history_id": null
}
send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
    "to": [
      "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w"
    ],
    "published": "2025-12-19T09:49:43Z",
    "object": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
    "id": "accept:680fb428-2eba-4ad2-95a1-aa12301ed184"
  }
}
receive.Alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
      "to": [
        "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w"
      ],
      "published": "2025-12-19T09:49:43Z",
      "object": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
      "id": "accept:680fb428-2eba-4ad2-95a1-aa12301ed184"
    }
  },
  "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "event_type": "outgoing",
  "history_id": null
}

when: "Alice" publishes a "moo" animal sound to her followers

receive.Bob.incoming.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
      "to": [
        "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w"
      ],
      "published": "2025-12-19T09:49:43Z",
      "object": "follow:be111400-ea7c-454c-a4e7-5c3a515fa810",
      "id": "accept:680fb428-2eba-4ad2-95a1-aa12301ed184"
    }
  },
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "event_type": "incoming",
  "history_id": null
}
send.Alice.trigger.publish_activity
{
  "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "AnimalSound",
    "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
    "to": [
      "https://www.w3.org/ns/activitystreams#Public"
    ],
    "cc": [
      "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/followers"
    ],
    "published": "2025-12-19T09:49:43Z",
    "content": "moo"
  }
}
receive.Alice.outgoing.AnimalSound
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "AnimalSound",
      "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/followers"
      ],
      "published": "2025-12-19T09:49:43Z",
      "content": "moo",
      "id": "http://abel/simple_storage/019b3603-e656-7437-bc2f-bc934e6f3df7"
    }
  },
  "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
  "event_type": "outgoing",
  "history_id": null
}
receive.Bob.incoming.AnimalSound
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "AnimalSound",
      "actor": "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://abel/actor/ziCslIeQFl-QW8UjuNT4LA/followers"
      ],
      "published": "2025-12-19T09:49:43Z",
      "content": "moo",
      "id": "http://abel/simple_storage/019b3603-e656-7437-bc2f-bc934e6f3df7"
    }
  },
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "event_type": "incoming",
  "history_id": null
}

then: "Bob" receives an activity

then: the received activity is of type "AnimalSound"

then: "Bob" can retrieve the activity

send.Bob.request.fetch
{
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "uri": "http://abel/simple_storage/019b3603-e656-7437-bc2f-bc934e6f3df7"
}
receive.Bob.response.fetch
{
  "actor": "http://abel/actor/uGcc4H_SA9IRsotjrcQu3w",
  "uri": "http://abel/simple_storage/019b3603-e656-7437-bc2f-bc934e6f3df7",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Tombstone",
    "id": "http://abel/simple_storage/019b3603-e656-7437-bc2f-bc934e6f3df7"
  }
}