org.anthers.post

anthers.org

Documentation

A post by a creator — an announcement, a devlog, a note to an audience. Posts are written by creators; a reader's contributions are comments, reviews and votes rather than posts of their own. A post is long-form: it may carry headings, lists, code, quotes and images, which is why its content is markdown rather than the plain text and facets a microblog post uses.

main record

A post by a creator — an announcement, a devlog, a note to an audience. Posts are written by creators; a reader's contributions are comments, reviews and votes rather than posts of their own. A post is long-form: it may carry headings, lists, code, quotes and images, which is why its content is markdown rather than the plain text and facets a microblog post uses.

Record Key tid Timestamp-based ID

Properties

content ref #content Optional

No description available.

publishedAt string datetime Required

When the post went live. This is the post's own date rather than the record's: a post may be drafted long before it is published, and a record written by a later backfill would otherwise claim the backfill's date. Record-creation time is already encoded in the record key, so this field exists only because the two genuinely differ.

maxLength: 64 bytes
url string uri Required

Where the post can be read. Deliberately not assumed to be an anthers.org address, because a creator's writing outliving any one host is the point. Required, because a post whose content is withheld must still say where to go.

maxLength: 2048 bytes
View raw schema
{
  "description": "A post by a creator — an announcement, a devlog, a note to an audience. Posts are written by creators; a reader's contributions are comments, reviews and votes rather than posts of their own. A post is long-form: it may carry headings, lists, code, quotes and images, which is why its content is markdown rather than the plain text and facets a microblog post uses.",
  "key": "tid",
  "record": {
    "properties": {
      "content": {
        "ref": "#content",
        "type": "ref"
      },
      "publishedAt": {
        "description": "When the post went live. This is the post's own date rather than the record's: a post may be drafted long before it is published, and a record written by a later backfill would otherwise claim the backfill's date. Record-creation time is already encoded in the record key, so this field exists only because the two genuinely differ.",
        "format": "datetime",
        "maxLength": 64,
        "type": "string"
      },
      "url": {
        "description": "Where the post can be read. Deliberately not assumed to be an anthers.org address, because a creator's writing outliving any one host is the point. Required, because a post whose content is withheld must still say where to go.",
        "format": "uri",
        "maxLength": 2048,
        "type": "string"
      }
    },
    "required": [
      "url",
      "publishedAt"
    ],
    "type": "object"
  },
  "type": "record"
}
content object

WHATEVER OF THIS POST ANYBODY MAY READ — which is the whole of an ungated post, and the public part of one that is not. Defined that way rather than as `the post` on purpose: if a post can later be put behind a gate, a field meaning `the post` would quietly come to mean something narrower, and a consumer built on the first meaning would misread the second without anything detecting it. Optional, because a post may be a single image with no words at all, and because a gated post may choose to reveal nothing.

Properties

format string Required

How to read `value`. `markdown` is what Anthers writes. Carried explicitly because a consumer that renders the wrong format shows syntax to a reader and nothing detects it — and because the alternative, changing what a bare string means later, is a break the evolution rules do not catch. An open set, so a plain-text-and-facets rendering or anything else may join without a new schema.

maxLength: 64 bytes
Known values: markdown
value string Required

The content itself. Markdown rather than plain text with facets: facets annotate byte ranges and cannot express a heading, a list, a fenced code block or an image at a position, all of which an Anthers post may contain. Images and other media are referenced by absolute URL rather than carried here. The limits are deliberately far above what Anthers itself accepts, because a length limit can never be raised once published — new data must stay valid under the old schema — so a limit set to today's product rule would become tomorrow's ceiling.

maxLength: 1000000 bytesmaxGraphemes: 100000 graphemes
View raw schema
{
  "description": "WHATEVER OF THIS POST ANYBODY MAY READ — which is the whole of an ungated post, and the public part of one that is not. Defined that way rather than as `the post` on purpose: if a post can later be put behind a gate, a field meaning `the post` would quietly come to mean something narrower, and a consumer built on the first meaning would misread the second without anything detecting it. Optional, because a post may be a single image with no words at all, and because a gated post may choose to reveal nothing.",
  "properties": {
    "format": {
      "description": "How to read `value`. `markdown` is what Anthers writes. Carried explicitly because a consumer that renders the wrong format shows syntax to a reader and nothing detects it — and because the alternative, changing what a bare string means later, is a break the evolution rules do not catch. An open set, so a plain-text-and-facets rendering or anything else may join without a new schema.",
      "knownValues": [
        "markdown"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "value": {
      "description": "The content itself. Markdown rather than plain text with facets: facets annotate byte ranges and cannot express a heading, a list, a fenced code block or an image at a position, all of which an Anthers post may contain. Images and other media are referenced by absolute URL rather than carried here. The limits are deliberately far above what Anthers itself accepts, because a length limit can never be raised once published — new data must stay valid under the old schema — so a limit set to today's product rule would become tomorrow's ceiling.",
      "maxGraphemes": 100000,
      "maxLength": 1000000,
      "type": "string"
    }
  },
  "required": [
    "format",
    "value"
  ],
  "type": "object"
}

Lexicon Garden

@