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.
{
"@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://mean.engineer/users/indutny/statuses/114152489010811347",
"type": "Note",
"summary": null,
"inReplyTo": "https://mean.engineer/users/indutny/statuses/114152472053724333",
"published": "2025-03-13T01:19:10Z",
"url": "https://mean.engineer/@indutny/114152489010811347",
"attributedTo": "https://mean.engineer/users/indutny",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://mean.engineer/users/indutny/followers"
],
"sensitive": false,
"atomUri": "https://mean.engineer/users/indutny/statuses/114152489010811347",
"inReplyToAtomUri": "https://mean.engineer/users/indutny/statuses/114152472053724333",
"conversation": "tag:mean.engineer,2025-03-10:objectId=40569:objectType=Conversation",
"content": "<p>…oh, and did I say that it is as typed as you could get the module to be without parsing queries or using ORM?</p><p>As for the trick that I mentioned, here's the source: <a href=\"https://github.com/signalapp/node-sqlcipher/blob/9d3a85329e563fb8099632d4748c16d617ffaeaf/lib/index.ts#L249-L261\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/signalapp/node-sqlc</span><span class=\"invisible\">ipher/blob/9d3a85329e563fb8099632d4748c16d617ffaeaf/lib/index.ts#L249-L261</span></a></p><p>Instead of creating objects for each row, we put column values into indexed entries of a cached array and compile a JS function to turn that array into an object (e.g. ["key1", "key2", value1, value2] => { key1: value1, key2: value 2 }). This gives roughly 40% boost to SELECT queries (on in-memory db)</p>",
"contentMap": {
"en": "<p>…oh, and did I say that it is as typed as you could get the module to be without parsing queries or using ORM?</p><p>As for the trick that I mentioned, here's the source: <a href=\"https://github.com/signalapp/node-sqlcipher/blob/9d3a85329e563fb8099632d4748c16d617ffaeaf/lib/index.ts#L249-L261\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/signalapp/node-sqlc</span><span class=\"invisible\">ipher/blob/9d3a85329e563fb8099632d4748c16d617ffaeaf/lib/index.ts#L249-L261</span></a></p><p>Instead of creating objects for each row, we put column values into indexed entries of a cached array and compile a JS function to turn that array into an object (e.g. ["key1", "key2", value1, value2] => { key1: value1, key2: value 2 }). This gives roughly 40% boost to SELECT queries (on in-memory db)</p>"
},
"attachment": [],
"tag": [],
"replies": {
"id": "https://mean.engineer/users/indutny/statuses/114152489010811347/replies",
"type": "Collection",
"first": {
"type": "CollectionPage",
"next": "https://mean.engineer/users/indutny/statuses/114152489010811347/replies?only_other_accounts=true&page=true",
"partOf": "https://mean.engineer/users/indutny/statuses/114152489010811347/replies",
"items": []
}
},
"likes": {
"id": "https://mean.engineer/users/indutny/statuses/114152489010811347/likes",
"type": "Collection",
"totalItems": 4
},
"shares": {
"id": "https://mean.engineer/users/indutny/statuses/114152489010811347/shares",
"type": "Collection",
"totalItems": 1
}
}