blue.skybind.comic

A comic manifest presenting a Bluesky post thread as a paginated comic. The record key SHOULD equal the rkey of the subject post so that clients can look up this record directly from a post. `posts`, when present, is an ordered snapshot of the thread composition; readers may alternatively reconstruct pages by walking the self-reply chain from `subject`.

Repository @tohu-sand.com did:plc:zvnmkrwdc4j4nwsyquoadf7c namespace authority
Details · record, key any
Kindrecord
Record keyany
Authorityskybind.blue
Indexed
cid bafyreiedliffntme52x6gq3sckrwvnth4nfk4dmsaxvsipug2rhflpt5ei

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A comic manifest presenting a Bluesky post thread as a paginated comic. The record key SHOULD equal the rkey of the subject post so that clients can look up this record directly from a post. `posts`, when present, is an ordered snapshot of the thread composition; readers may alternatively reconstruct pages by walking the self-reply chain from `subject`.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this record was created.",
            "format": "datetime",
            "type": "string"
          },
          "labels": {
            "description": "Self labels for this comic as a whole. Labels on the referenced posts remain authoritative for the images themselves.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "language": {
            "description": "Primary language of the comic content.",
            "format": "language",
            "type": "string"
          },
          "pageCount": {
            "description": "Total page (image) count at the time of writing. Informational.",
            "minimum": 1,
            "type": "integer"
          },
          "posts": {
            "description": "Ordered snapshot of the posts composing this comic as of the last record update. The first item MUST equal `subject`. Readers MAY render pages directly from this list without walking the reply graph; the live self-reply chain remains the source for pages appended after the record was written. Images are always fetched from the referenced posts' embeds in listed order; they are never duplicated here.",
            "items": {
              "ref": "com.atproto.repo.strongRef",
              "type": "ref"
            },
            "minLength": 1,
            "type": "array"
          },
          "startSide": {
            "default": "right",
            "description": "Which side the first page is placed on in two-page spread view. Distinct from reading direction.",
            "knownValues": [
              "right",
              "left"
            ],
            "maxLength": 32,
            "type": "string"
          },
          "subject": {
            "description": "Strong reference to the root post (source of the first page). Expected to be authored by the same account as this record.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "title": {
            "description": "Optional display title of the comic.",
            "maxGraphemes": 100,
            "maxLength": 1000,
            "type": "string"
          },
          "url": {
            "description": "Canonical reader URL where this comic can be read. Clients may present this as a 'read' action.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "subject",
          "url",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "blue.skybind.comic",
  "lexicon": 1
}