Skip to content

Publish Object content is correct

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:19:31.276673",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg#legacy-key-1",
    "owner": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8J2HVPqGELy+E5yrBBL5\nAGTYvdwA/6tzQmkHGE6ewxqtiFKbJaAg4YoQQt06M2RZtlSsRnIK8476EMZP4hWX\nqoWa5jQILB1vaMAW9cDCiEJFJj9ai19v1Ag5VURSyawSrEIN+L2UrPgkJXmsnCRs\nOHFydLxurUKzpTPr0Dpz/5KYggpTtSsVGqBariuoqQqfiWtJEfyQewtoaBIFgs0K\noP1OhZmDL5NV7FlbUf3YDJhoybXzftLrLBBltjpKFsSR1qGQczSAWlZm2eYuornd\n4zvkzBZGA/D/erJG7Y6D68EQFcOL15Z51UaG+0brjuZ3o9hHFZeWt/rGN1e/084l\nOQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "type": "Person",
  "inbox": "http://abel/inbox/2tpyfGcX8zRx246kfIFhsw",
  "outbox": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/outbox",
  "followers": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers",
  "following": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/following",
  "preferredUsername": "Alice",
  "name": "Alice",
  "identifiers": [
    "acct:Alice@abel",
    "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
  ],
  "endpoints": {
    "sharedInbox": "http://abel/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:31.923073",
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers"
    }
  ],
  "publicKey": {
    "id": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ#legacy-key-1",
    "owner": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjEFgi1NJwVK5RuXqnsq8\ngHhEhoqqSTu/RB0LLhcNVPGkdWrkopVpI/Xjdk87lvdG/ZJfqoW7ZXQYL3YYG1Eq\nJa0E7NFOsFHuKOKnJzxvyjUU9QMzYS4C+2cjET5zkqxYrSAOabb+G3vy267vCZie\nwdkymnxPMz1Hg4kvyBZbykiM0hsle9pWVyo4Y+7uuPk5ZPx+fYtFRdQNOwNrA+8R\ntOdyTIvMXZ6dzsHY81sr2bh5X/M43hVhvcZDr4EwOltugzalu9euROCPRVKIZgL1\n3mFqjfhOwa9eTGqaOhmlsZJehcWYMdel+n02dTriC6YEBMANhG658PhYNEQol6t3\nVQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "id": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
  "type": "Person",
  "inbox": "http://banach/inbox/3LQUdMGZubw03rqH8CzmRg",
  "outbox": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ/outbox",
  "followers": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ/followers",
  "following": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ/following",
  "preferredUsername": "Bob",
  "name": "Bob",
  "identifiers": [
    "acct:Bob@banach",
    "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ"
  ],
  "endpoints": {
    "sharedInbox": "http://banach/shared_inbox"
  },
  "manuallyApprovesFollowers": true
}

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

send.Bob.trigger.send_message
{
  "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Follow",
    "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
    "to": [
      "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
    ],
    "id": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
    "published": "2026-03-20T15:19:32Z",
    "object": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
  }
}
receive.Bob.outgoing.Follow
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Follow",
      "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
      "to": [
        "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
      ],
      "id": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
      "published": "2026-03-20T15:19:32Z",
      "object": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
    }
  },
  "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
  "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://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
      "to": [
        "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
      ],
      "id": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
      "published": "2026-03-20T15:19:32Z",
      "object": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg"
    }
  },
  "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "event_type": "incoming",
  "history_id": null
}
send.Alice.trigger.send_message
{
  "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Accept",
    "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
    "to": [
      "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ"
    ],
    "published": "2026-03-20T15:19:32Z",
    "object": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
    "id": "accept:0a016fbe-5cc5-4e7f-8e1f-a25803655896"
  }
}
receive.Alice.outgoing.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
      "to": [
        "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ"
      ],
      "published": "2026-03-20T15:19:32Z",
      "object": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
      "id": "accept:0a016fbe-5cc5-4e7f-8e1f-a25803655896"
    }
  },
  "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "event_type": "outgoing",
  "history_id": null
}

when: "Alice" publishes a message "I <3 milk!" to her followers

receive.Bob.incoming.Accept
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Accept",
      "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
      "to": [
        "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ"
      ],
      "published": "2026-03-20T15:19:32Z",
      "object": "follow:0c1b5690-9a06-4200-bac2-dd0b1321c8be",
      "id": "accept:0a016fbe-5cc5-4e7f-8e1f-a25803655896"
    }
  },
  "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
  "event_type": "incoming",
  "history_id": null
}
send.Alice.trigger.publish_object
{
  "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "data": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Note",
    "attributedTo": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
    "to": [
      "https://www.w3.org/ns/activitystreams#Public"
    ],
    "cc": [
      "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers"
    ],
    "published": "2026-03-20T15:19:33Z",
    "content": "I <3 milk!"
  }
}
receive.Alice.outgoing.Create
{
  "data": {
    "raw": {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers"
      ],
      "published": "2026-03-20T15:19:33Z",
      "object": {
        "@context": "https://www.w3.org/ns/activitystreams",
        "type": "Note",
        "attributedTo": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers"
        ],
        "published": "2026-03-20T15:19:33Z",
        "content": "I <3 milk!",
        "id": "http://abel/simple_storage/019d0bd4-8fca-7534-a451-30dd754c4e89"
      },
      "id": "http://abel/simple_storage/019d0bd4-8fd2-76a3-96b8-2f09ce256dc0"
    }
  },
  "actor": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
  "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/w0JypYc6jC6IaRDnpjLLWg",
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "cc": [
        "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers"
      ],
      "published": "2026-03-20T15:19:33Z",
      "object": {
        "@context": "https://www.w3.org/ns/activitystreams",
        "type": "Note",
        "attributedTo": "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg",
        "to": [
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "cc": [
          "http://abel/actor/w0JypYc6jC6IaRDnpjLLWg/followers"
        ],
        "published": "2026-03-20T15:19:33Z",
        "content": "I <3 milk!",
        "id": "http://abel/simple_storage/019d0bd4-8fca-7534-a451-30dd754c4e89"
      },
      "id": "http://abel/simple_storage/019d0bd4-8fd2-76a3-96b8-2f09ce256dc0"
    }
  },
  "actor": "http://banach/actor/2mxdQS9dUk9Jxjqsf6-LMQ",
  "event_type": "incoming",
  "history_id": null
}

then: "Bob" receives a message saying "I <3 milk!"