Hey @manton,
As you know, I’ve been building OutPost, a Micropub client and testing it against my test blog on Micro.blog. I ran into something I think is on the server side, and I wanted to flag it.
When I create a reply or a bookmark via Micropub, the properties go up with the post. Here’s what I’m sending for a reply:
{
"type": ["h-entry"],
"properties": {
"content": ["This is the post content."],
"in-reply-to": ["https://apple.com"]
}
}
And for a bookmark:
{
"type": ["h-entry"],
"properties": {
"content": ["This is the post content."],
"bookmark-of": ["https://apple.com"]
}
}
However, when viewing on the blog, both the reply and bookmark show up as a simple note post.
When I fetch the same post back with q=source, the properties I originally sent aren’t there. All I get is the content:
{
"type": "h-entry",
"properties": {
"uid": [
6049076
],
"name": [
""
],
"content": [
"This is a reply to a URL."
],
"summary": [
""
],
"published": [
"2026-10-17T20:34:41+00:00"
],
"post-status": [
"published"
],
"url": [
"https://jimmitchell-test.micro.blog/2026/10/17/133441/"
],
"category": [],
"syndication": [
"..."
]
}
}
{
"type": "h-entry",
"properties": {
"uid": [
6049077
],
"name": [
""
],
"content": [
"This is a bookmark post."
],
"summary": [
""
],
"published": [
"2026-10-17T20:37:00+00:00"
],
"post-status": [
"published"
],
"url": [
"https://jimmitchell-test.micro.blog/2026/10/17/this-is-a-bookmark-post/"
],
"category": [],
"syndication": [
"..."
]
}
}
Why it matters: Micropub doesn’t tell a client what kind of post something is. Clients work it out from the properties (Post Type Discovery). So once in-reply-to or bookmark-of is gone, every reply and bookmark comes back as a plain note in any Micropub editor, not just OutPost. And since an editor builds its update from q=source, editing one of these posts could quietly drop the reply or bookmark target for good.
The spec is pretty clear on this one. From §3.7.2:
If no properties are specified, then the response MUST include all properties, as well as a type property indicating the vocabulary of the post.
It also says servers that support updates MUST support the source query, which Micro.blog does.
It’s the same kind of thing as the photo issue you confirmed a while back, where photo doesn’t come back from q=source either. My guess is these values aren’t stored on the post once it’s published. I totally get that might be a bigger change than it sounds.
A couple of smaller things I noticed while I was in there, in case they’re useful:
- type comes back as a string (“h-entry”) rather than an array ([“h-entry”]).
- q=source&url=… seems to ignore url and return the whole feed, so the client has to pick the post out itself.
Neither one is blocking how OutPost works. I just figured you’d want to know.
Thanks, Manton. Appreciate all you do for the platform.