Messages have url property redirects to ActivityPub data¶
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:17:34.198595",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA#legacy-key-1",
"owner": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1zenwPY4AJ5gpFvlYM27\nKpKMkYfCrr67Heg1gyje8RaJ5rbWGv/b0HTfA66hO8x9WUXzkzibANRutpAyGHK1\nTvRKGOw1W74PuTwFhG/iLz/tT+/sGZn5XWymj/H/OyimcsUsELzJhVlaIxqpIIqP\nV9beHxMRH8VxBexeJW7IPK1/AB0b1CZxcMxaHbHNhg3RRXw3Gw3PQT/Bp9YZFTqQ\nzQ1pDsI+YJIEwbxqtsY5gRUiGd9jnWRsMcYaC58jnvJ0gn7MFk3dhwaTMnB4S0Aw\nS9i7NatPqvfCCofLRq7OtHWm0SAFuuM58SRBRXOUgNMWFyYGr8MOfMpOiHKY8Q3p\nYwIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"type": "Person",
"inbox": "http://abel/inbox/RJge_adq5fyWK7KhqyjM-A",
"outbox": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/outbox",
"followers": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers",
"following": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/following",
"preferredUsername": "Alice",
"name": "Alice",
"identifiers": [
"acct:Alice@abel",
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
],
"endpoints": {
"sharedInbox": "http://abel/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:17:34.956854",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
}
],
"publicKey": {
"id": "http://abel/actor/OO873zX59uDYP6eZkgOiPg#legacy-key-1",
"owner": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnsHnGJjQkZ+ePFxwGrOF\nBbI4PNcRzQ9S6xrEhwwZ9cifZNhiiu9Iud96dYg1QMKVVBo8BD6r2vAQ3rFDbfEi\ngFX4mc+Bf6spbTirBDZjOHLs88WgcOuojv9bt9gb5Y4+skcqP9vkNL6R1d9/3EKR\nv1hT1n6jt0/qrhhHFjZsInM1CVObqbfVejJF3X37epc7mE55YYV/F2puqQ2h6vw9\nuisb4lZw8yQQSGhrgGWiT3OiP794Kilahxaudn8uEfT5zVAw5RyR+ru4qq+tRUwl\nTi1cihkq1rwjodgZCt0QYGBllw/k4da52syydRsjMrpRCs7xxqnFZPRFDFo6NXYt\n1QIDAQAB\n-----END PUBLIC KEY-----\n"
},
"id": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"type": "Person",
"inbox": "http://abel/inbox/DXgQw9OS7IvCU-9ts4gFCg",
"outbox": "http://abel/actor/OO873zX59uDYP6eZkgOiPg/outbox",
"followers": "http://abel/actor/OO873zX59uDYP6eZkgOiPg/followers",
"following": "http://abel/actor/OO873zX59uDYP6eZkgOiPg/following",
"preferredUsername": "Bob",
"name": "Bob",
"identifiers": [
"acct:Bob@abel",
"http://abel/actor/OO873zX59uDYP6eZkgOiPg"
],
"endpoints": {
"sharedInbox": "http://abel/shared_inbox"
},
"manuallyApprovesFollowers": true
}
when: "Bob" sends "Alice" a Follow Activity¶
send.Bob.trigger.send_message
{
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"to": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
],
"id": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"published": "2026-03-20T15:17:35Z",
"object": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
}
}
receive.Bob.outgoing.Follow
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"to": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
],
"id": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"published": "2026-03-20T15:17:35Z",
"object": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
}
},
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"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/OO873zX59uDYP6eZkgOiPg",
"to": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
],
"id": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"published": "2026-03-20T15:17:35Z",
"object": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA"
}
},
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"event_type": "incoming",
"history_id": null
}
when: "Alice" sends an Accept to this Follow Activity¶
send.Alice.trigger.send_message
{
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"http://abel/actor/OO873zX59uDYP6eZkgOiPg"
],
"published": "2026-03-20T15:17:35Z",
"object": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"id": "accept:e52f4da0-b6ce-4902-8a86-0bebb9424192"
}
}
receive.Alice.outgoing.Accept
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"http://abel/actor/OO873zX59uDYP6eZkgOiPg"
],
"published": "2026-03-20T15:17:35Z",
"object": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"id": "accept:e52f4da0-b6ce-4902-8a86-0bebb9424192"
}
},
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"event_type": "outgoing",
"history_id": null
}
receive.Bob.incoming.Accept
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"http://abel/actor/OO873zX59uDYP6eZkgOiPg"
],
"published": "2026-03-20T15:17:35Z",
"object": "follow:0e083f47-1789-4a8f-9b24-1d1972ed300a",
"id": "accept:e52f4da0-b6ce-4902-8a86-0bebb9424192"
}
},
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"event_type": "incoming",
"history_id": null
}
when: "Alice" publishes a message "Who stole my milk?" to her followers¶
send.Alice.trigger.publish_object
{
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"data": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"attributedTo": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers"
],
"published": "2026-03-20T15:17:36Z",
"content": "Who stole my milk?"
}
}
receive.Alice.outgoing.Create
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers"
],
"published": "2026-03-20T15:17:36Z",
"object": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"attributedTo": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers"
],
"published": "2026-03-20T15:17:36Z",
"content": "Who stole my milk?",
"id": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a",
"replies": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/replies",
"shares": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/shares",
"likes": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/likes",
"url": [
{
"type": "Link",
"mediaType": "text/html",
"href": "http://abel/@xQZGVAnUzaoM/o/019d0bd2-c713-7d27-958a-fe4c8bead45a"
}
]
},
"id": "http://abel/simple_storage/019d0bd2-c719-76f5-b612-f5f56344ca1f"
}
},
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"event_type": "outgoing",
"history_id": null
}
receive.Bob.incoming.Create
{
"data": {
"raw": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"actor": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers"
],
"published": "2026-03-20T15:17:36Z",
"object": {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"attributedTo": "http://abel/actor/UbslQ4sAVUs9AHnqCasGKA",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"http://abel/actor/UbslQ4sAVUs9AHnqCasGKA/followers"
],
"published": "2026-03-20T15:17:36Z",
"content": "Who stole my milk?",
"id": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a",
"replies": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/replies",
"shares": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/shares",
"likes": "http://abel/html_display/object/019d0bd2-c713-7d27-958a-fe4c8bead45a/likes",
"url": [
{
"type": "Link",
"mediaType": "text/html",
"href": "http://abel/@xQZGVAnUzaoM/o/019d0bd2-c713-7d27-958a-fe4c8bead45a"
}
]
},
"id": "http://abel/simple_storage/019d0bd2-c719-76f5-b612-f5f56344ca1f"
}
},
"actor": "http://abel/actor/OO873zX59uDYP6eZkgOiPg",
"event_type": "incoming",
"history_id": null
}