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",
"blurhash": "toot:blurhash",
"focalPoint": {
"@container": "@list",
"@id": "toot:focalPoint"
},
"Hashtag": "as:Hashtag"
}
],
"id": "https://fantastic.earth/users/abnv/collections/featured",
"type": "OrderedCollection",
"totalItems": 2,
"orderedItems": [
{
"id": "https://fantastic.earth/users/abnv/statuses/112542142040173291",
"type": "Note",
"summary": null,
"inReplyTo": null,
"published": "2024-06-01T15:46:46Z",
"url": "https://fantastic.earth/@abnv/112542142040173291",
"attributedTo": "https://fantastic.earth/users/abnv",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://fantastic.earth/users/abnv/followers"
],
"sensitive": false,
"atomUri": "https://fantastic.earth/users/abnv/statuses/112542142040173291",
"inReplyToAtomUri": null,
"conversation": "tag:fantastic.earth,2024-06-01:objectId=11629494:objectType=Conversation",
"content": "<p>JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for <a href=\"https://fantastic.earth/tags/JSON\" class=\"mention hashtag\" rel=\"tag\">#<span>JSON</span></a> is a great exercise for learning the basics of parsing.</p><p>That's exactly what I did: I wrote a JSON parser from scratch in <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a>. Read my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> post to learn about basics of <a href=\"https://fantastic.earth/tags/parsing\" class=\"mention hashtag\" rel=\"tag\">#<span>parsing</span></a>, nuances of the JSON syntax, and parser combinators and property-based testing in Haskell: <a href=\"https://abhinavsarkar.net/posts/json-parsing-from-scratch-in-haskell/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/json-p</span><span class=\"invisible\">arsing-from-scratch-in-haskell/</span></a></p><p><a href=\"https://fantastic.earth/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://fantastic.earth/tags/functionalprogramming\" class=\"mention hashtag\" rel=\"tag\">#<span>functionalprogramming</span></a></p>",
"contentMap": {
"en": "<p>JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for <a href=\"https://fantastic.earth/tags/JSON\" class=\"mention hashtag\" rel=\"tag\">#<span>JSON</span></a> is a great exercise for learning the basics of parsing.</p><p>That's exactly what I did: I wrote a JSON parser from scratch in <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a>. Read my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> post to learn about basics of <a href=\"https://fantastic.earth/tags/parsing\" class=\"mention hashtag\" rel=\"tag\">#<span>parsing</span></a>, nuances of the JSON syntax, and parser combinators and property-based testing in Haskell: <a href=\"https://abhinavsarkar.net/posts/json-parsing-from-scratch-in-haskell/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/json-p</span><span class=\"invisible\">arsing-from-scratch-in-haskell/</span></a></p><p><a href=\"https://fantastic.earth/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://fantastic.earth/tags/functionalprogramming\" class=\"mention hashtag\" rel=\"tag\">#<span>functionalprogramming</span></a></p>"
},
"attachment": [
{
"type": "Document",
"mediaType": "image/png",
"url": "https://fantastic.earth/system/media_attachments/files/112/542/141/834/983/206/original/5d056cd79164e22a.png",
"name": "A transition diagram depicting the JSON syntax.",
"blurhash": "U6Ss50t7~qt7IUfQRjayIUfQRjfQM{fQRjay",
"width": 1018,
"height": 874
}
],
"tag": [
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/json",
"name": "#json"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/haskell",
"name": "#haskell"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/blog",
"name": "#blog"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/parsing",
"name": "#parsing"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/programming",
"name": "#programming"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/functionalprogramming",
"name": "#functionalprogramming"
}
],
"replies": {
"id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies",
"type": "Collection",
"first": {
"type": "CollectionPage",
"next": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies?only_other_accounts=true&page=true",
"partOf": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies",
"items": []
}
},
"likes": {
"id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/likes",
"type": "Collection",
"totalItems": 30
},
"shares": {
"id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/shares",
"type": "Collection",
"totalItems": 25
}
},
{
"id": "https://fantastic.earth/users/abnv/statuses/110481168853488318",
"type": "Note",
"summary": null,
"inReplyTo": null,
"published": "2023-06-03T16:14:10Z",
"url": "https://fantastic.earth/@abnv/110481168853488318",
"attributedTo": "https://fantastic.earth/users/abnv",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://fantastic.earth/users/abnv/followers"
],
"sensitive": false,
"atomUri": "https://fantastic.earth/users/abnv/statuses/110481168853488318",
"inReplyToAtomUri": null,
"conversation": "tag:fantastic.earth,2023-06-03:objectId=3396524:objectType=Conversation",
"content": "<p>I wrote the fourth part of my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> series “Implementing Co, a small programming language with coroutines”. And this time, we add support for channels in Co for inter-coroutine communication. <a href=\"https://abhinavsarkar.net/posts/implementing-co-4/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/implem</span><span class=\"invisible\">enting-co-4/</span></a></p><p><a href=\"https://fantastic.earth/tags/Programming\" class=\"mention hashtag\" rel=\"tag\">#<span>Programming</span></a> <a href=\"https://fantastic.earth/tags/PLT\" class=\"mention hashtag\" rel=\"tag\">#<span>PLT</span></a> <a href=\"https://fantastic.earth/tags/ProgramingLanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>ProgramingLanguages</span></a> <a href=\"https://fantastic.earth/tags/Compilers\" class=\"mention hashtag\" rel=\"tag\">#<span>Compilers</span></a> <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a> <a href=\"https://fantastic.earth/tags/concurrency\" class=\"mention hashtag\" rel=\"tag\">#<span>concurrency</span></a></p>",
"contentMap": {
"en": "<p>I wrote the fourth part of my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> series “Implementing Co, a small programming language with coroutines”. And this time, we add support for channels in Co for inter-coroutine communication. <a href=\"https://abhinavsarkar.net/posts/implementing-co-4/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/implem</span><span class=\"invisible\">enting-co-4/</span></a></p><p><a href=\"https://fantastic.earth/tags/Programming\" class=\"mention hashtag\" rel=\"tag\">#<span>Programming</span></a> <a href=\"https://fantastic.earth/tags/PLT\" class=\"mention hashtag\" rel=\"tag\">#<span>PLT</span></a> <a href=\"https://fantastic.earth/tags/ProgramingLanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>ProgramingLanguages</span></a> <a href=\"https://fantastic.earth/tags/Compilers\" class=\"mention hashtag\" rel=\"tag\">#<span>Compilers</span></a> <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a> <a href=\"https://fantastic.earth/tags/concurrency\" class=\"mention hashtag\" rel=\"tag\">#<span>concurrency</span></a></p>"
},
"attachment": [],
"tag": [
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/blog",
"name": "#blog"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/programming",
"name": "#programming"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/plt",
"name": "#plt"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/programinglanguages",
"name": "#programinglanguages"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/compilers",
"name": "#compilers"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/haskell",
"name": "#haskell"
},
{
"type": "Hashtag",
"href": "https://fantastic.earth/tags/concurrency",
"name": "#concurrency"
}
],
"replies": {
"id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies",
"type": "Collection",
"first": {
"type": "CollectionPage",
"next": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies?only_other_accounts=true&page=true",
"partOf": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies",
"items": []
}
},
"likes": {
"id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/likes",
"type": "Collection",
"totalItems": 42
},
"shares": {
"id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/shares",
"type": "Collection",
"totalItems": 25
}
}
]
}