Skip to content

Publish Object Works

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:19:22.215554",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ#legacy-key-1",
    "owner": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlaB1L010kmxHUfY7U03c\ns222gdkBvv62y1rSMuZmejTOlGSflotAG+cuG2Fq2fNknEME2CyKKQe5oExtOzed\nVbIT1owf0gMcHIr54wKDIrpGcxX1OvtPJQNfQ7kYEIvJeZ1pOPtvhOO9Ywkn0S9K\ntAXYWCmUfCASqezI5GVJlR+pt+tR3+ipmIN5jyBOXN0pfhPvhtGsZQbHjIaxuuwE\n+V5HfhPNs3TfKtWE95QazBmNOA0KIcqoiOTej2YEpOlZMihEd6tk8Sj2OmHmJvME\nfDa1/Er2XoADrXYyDkr7Ao4OdEbXJVUGGREI78S7OSOSN8HGoF5EI7+6JCMrx/f/\nVQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "type": "Person",
  "inbox": "http://banach/inbox/f-_RwOI_fT2rc01EhGLcAg",
  "outbox": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/outbox",
  "followers": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers",
  "following": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/following",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@banach",
    "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/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:19:22.847409",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w#legacy-key-1",
    "owner": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq/Kf1LwA60Z6NRilEU8I\nJ8sTgUTvrD2ZkywBbbobUxmjEdjRnrNnVmx+ABbIGcousqfJ0WaJy8nYTm0ww8ma\neGo6UrR/iNbA7wPo5Q76kAL08hCU2gBnd1sSDd9qinswzHnbFUJWVu0iTXm49W+n\nAJfgEMCMv1KfF1kZB4eONNod/CvXRUjJSjX2KpICyBGeeUhxJTY0walhWAtYM/ZC\nndqyevmZnofRu6nAAFme/6tby1Qkyb1l8PkB0J+/uzJCsxD8M6yiScyyK6FRdfjv\nyiX1iq9wImXEOxMMlQZtoHHXT/X/bnoJULAz1jHgFG7LQZQmeqUZ/qxQFyehz+rU\njQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "type": "Person",
  "inbox": "http://banach/inbox/2ZRjD4Et8Kj-uVrXGS4qPA",
  "outbox": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w/outbox",
  "followers": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w/followers",
  "following": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w/following",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@banach",
    "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

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

send.Bob.trigger.send_message
{
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
    "to": [
      "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
    ],
    "id": "follow:fe279152-dc95-484a-ad20-86cee6186305",
    "published": "2026-03-20T15:19:22Z",
    "object": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
  }
}
receive.Bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
      "to": [
        "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
      ],
      "id": "follow:fe279152-dc95-484a-ad20-86cee6186305",
      "published": "2026-03-20T15:19:22Z",
      "object": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
    }
  },
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "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/Rapq829XnAAOP1b6FR7Z9w",
      "to": [
        "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
      ],
      "id": "follow:fe279152-dc95-484a-ad20-86cee6186305",
      "published": "2026-03-20T15:19:22Z",
      "object": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ"
    }
  },
  "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "event_type": "incoming",
  "history_id": null
}

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

send.Alice.trigger.send_message
{
  "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
    "to": [
      "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w"
    ],
    "published": "2026-03-20T15:19:23Z",
    "object": "follow:fe279152-dc95-484a-ad20-86cee6186305",
    "id": "accept:ba221076-97f4-4f6e-b1d1-d2d6cd4ba434"
  }
}
receive.Alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
      "to": [
        "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w"
      ],
      "published": "2026-03-20T15:19:23Z",
      "object": "follow:fe279152-dc95-484a-ad20-86cee6186305",
      "id": "accept:ba221076-97f4-4f6e-b1d1-d2d6cd4ba434"
    }
  },
  "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "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/eP2doUzO9S4O2PJN8DMLZQ",
      "to": [
        "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w"
      ],
      "published": "2026-03-20T15:19:23Z",
      "object": "follow:fe279152-dc95-484a-ad20-86cee6186305",
      "id": "accept:ba221076-97f4-4f6e-b1d1-d2d6cd4ba434"
    }
  },
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "event_type": "incoming",
  "history_id": null
}

when: "Alice" publishes a message "moo" to her followers

send.Alice.trigger.publish_object
{
  "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Note",
    "attributedTo": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
    "to": [
      "https://www.w3.org/ns/activitystreams#Public"
    ],
    "cc": [
      "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers"
    ],
    "published": "2026-03-20T15:19:23Z",
    "content": "moo"
  }
}
receive.Alice.outgoing.Create
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers"
      ],
      "published": "2026-03-20T15:19:23Z",
      "object": {
        "@context": "https://www.w3.org/ns/activitystreams",
        "type": "Note",
        "attributedTo": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers"
        ],
        "published": "2026-03-20T15:19:23Z",
        "content": "moo",
        "id": "http://banach/simple_storage/019d0bd4-6c4f-7b7b-bc83-e625a96e6120"
      },
      "id": "http://banach/simple_storage/019d0bd4-6c58-7c94-9532-f97115dd3904"
    }
  },
  "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
  "event_type": "outgoing",
  "history_id": null
}
receive.Bob.incoming.Create
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "actor": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers"
      ],
      "published": "2026-03-20T15:19:23Z",
      "object": {
        "@context": "https://www.w3.org/ns/activitystreams",
        "type": "Note",
        "attributedTo": "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "http://banach/actor/eP2doUzO9S4O2PJN8DMLZQ/followers"
        ],
        "published": "2026-03-20T15:19:23Z",
        "content": "moo",
        "id": "http://banach/simple_storage/019d0bd4-6c4f-7b7b-bc83-e625a96e6120"
      },
      "id": "http://banach/simple_storage/019d0bd4-6c58-7c94-9532-f97115dd3904"
    }
  },
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "event_type": "incoming",
  "history_id": null
}

then: "Bob" receives an activity

then: the received activity is of type "Create"

then: "Bob" can retrieve the activity

send.Bob.request.fetch
{
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "uri": "http://banach/simple_storage/019d0bd4-6c58-7c94-9532-f97115dd3904"
}
receive.Bob.response.fetch
{
  "actor": "http://banach/actor/Rapq829XnAAOP1b6FR7Z9w",
  "uri": "http://banach/simple_storage/019d0bd4-6c58-7c94-9532-f97115dd3904",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Tombstone",
    "id": "http://banach/simple_storage/019d0bd4-6c58-7c94-9532-f97115dd3904"
  }
}