ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount" } ], "id": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261", "type": "Note", "summary": null, "inReplyTo": "https://mastodon.social/users/benpate/statuses/113471912582639462", "published": "2024-11-13T09:00:30Z", "url": "https://astrodon.social/@sebinthestars/113474825775507261", "attributedTo": "https://astrodon.social/users/sebinthestars", "to": [ "https://astrodon.social/users/sebinthestars/followers" ], "cc": [ "https://www.w3.org/ns/activitystreams#Public", "https://mastodon.social/users/benpate", "https://transfem.social/users/9xs95plmxqu3009b", "https://hachyderm.io/users/hrefna", "https://hachyderm.io/users/jenniferplusplus", "https://ice.floofy.city/users/9ytygcrxpx29m8q1" ], "sensitive": false, "atomUri": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261", "inReplyToAtomUri": "https://mastodon.social/users/benpate/statuses/113471912582639462", "conversation": "tag:hachyderm.io,2024-11-12:objectId=209369747:objectType=Conversation", "content": "<p><span class=\"h-card\" translate=\"no\"><a href=\"https://mastodon.social/@benpate\" class=\"u-url mention\">@<span>benpate</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://transfem.social/@puppygirlhornypost2\" class=\"u-url mention\">@<span>puppygirlhornypost2</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://hachyderm.io/@hrefna\" class=\"u-url mention\">@<span>hrefna</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://hachyderm.io/@jenniferplusplus\" class=\"u-url mention\">@<span>jenniferplusplus</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://ice.floofy.city/@lily\" class=\"u-url mention\">@<span>lily</span></a></span> </p><p>(Long reply follows, possibly breaking your client implementation?)</p><p>- Lack of reference implementation. A spec without a reference implementation or usable test suite hands control of the spec to the largest implementer.<br />- Lack of easy extensibility. A successor needs a clearly documented capability for extensions.<br />- Lack of opinion on implementation. This is a controversial one, but leads to implementations that are spec-conformant but not interoperable. The spec should provide a baseline set of operations that may/must be implemented upon receiving a message, with a set of expected responses.<br />- Feature discoverability. When your protocol allows for wildly different implementations, feature discovery is essential to allow interoperability. This allows servers to negotiate for the largest implemented subset of features instead of defensively assuming the smallest.<br />- Trust at the server level. A server verifies actors it owns, no individual certs. The verification mechanism must be baked into the spec and not left to implementers.<br />- Batching.<br />- Doesn&#39;t utulise HTTP effectively. ActivityPub mandates HTTPS as a transport protocol but does not mandate use of HTTP features such as response codes. This is a must-fix for operational scaling.<br />- Client API. C2S is almost impossible to implement. A replacement should be an optional, lightweight, minimum-surface REST API.</p>", "contentMap": { "en": "<p><span class=\"h-card\" translate=\"no\"><a href=\"https://mastodon.social/@benpate\" class=\"u-url mention\">@<span>benpate</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://transfem.social/@puppygirlhornypost2\" class=\"u-url mention\">@<span>puppygirlhornypost2</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://hachyderm.io/@hrefna\" class=\"u-url mention\">@<span>hrefna</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://hachyderm.io/@jenniferplusplus\" class=\"u-url mention\">@<span>jenniferplusplus</span></a></span> <span class=\"h-card\" translate=\"no\"><a href=\"https://ice.floofy.city/@lily\" class=\"u-url mention\">@<span>lily</span></a></span> </p><p>(Long reply follows, possibly breaking your client implementation?)</p><p>- Lack of reference implementation. A spec without a reference implementation or usable test suite hands control of the spec to the largest implementer.<br />- Lack of easy extensibility. A successor needs a clearly documented capability for extensions.<br />- Lack of opinion on implementation. This is a controversial one, but leads to implementations that are spec-conformant but not interoperable. The spec should provide a baseline set of operations that may/must be implemented upon receiving a message, with a set of expected responses.<br />- Feature discoverability. When your protocol allows for wildly different implementations, feature discovery is essential to allow interoperability. This allows servers to negotiate for the largest implemented subset of features instead of defensively assuming the smallest.<br />- Trust at the server level. A server verifies actors it owns, no individual certs. The verification mechanism must be baked into the spec and not left to implementers.<br />- Batching.<br />- Doesn&#39;t utulise HTTP effectively. ActivityPub mandates HTTPS as a transport protocol but does not mandate use of HTTP features such as response codes. This is a must-fix for operational scaling.<br />- Client API. C2S is almost impossible to implement. A replacement should be an optional, lightweight, minimum-surface REST API.</p>" }, "attachment": [], "tag": [ { "type": "Mention", "href": "https://mastodon.social/users/benpate", "name": "@benpate@mastodon.social" }, { "type": "Mention", "href": "https://transfem.social/users/9xs95plmxqu3009b", "name": "@puppygirlhornypost2@transfem.social" }, { "type": "Mention", "href": "https://hachyderm.io/users/hrefna", "name": "@hrefna@hachyderm.io" }, { "type": "Mention", "href": "https://hachyderm.io/users/jenniferplusplus", "name": "@jenniferplusplus@hachyderm.io" }, { "type": "Mention", "href": "https://ice.floofy.city/users/9ytygcrxpx29m8q1", "name": "@lily@ice.floofy.city" } ], "replies": { "id": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261/replies?only_other_accounts=true&page=true", "partOf": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261/replies", "items": [] } }, "likes": { "id": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261/likes", "type": "Collection", "totalItems": 1 }, "shares": { "id": "https://astrodon.social/users/sebinthestars/statuses/113474825775507261/shares", "type": "Collection", "totalItems": 0 } }