art.graphik.issue

graphik.art

Documentation

One issue or chapter. Points at its series by AT-URI rather than being nested inside it, so a series record does not have to be rewritten (and re-synced) every time a chapter ships, and so an anthology can accept an issue from another repo.

main record

One issue or chapter. Points at its series by AT-URI rather than being nested inside it, so a series record does not have to be rewritten (and re-synced) every time a chapter ships, and so an anthology can accept an issue from another repo.

Record Key tid Timestamp-based ID

Properties

contentRating string Optional

No description available.

maxLength: 16 bytes
Known values: all-ages, teen, mature, explicit
cover blob Optional

No description available.

maxSize: 10.0 MB
createdAt string datetime Required

An RFC 3339 formatted timestamp.

description string Optional

Author's note or synopsis for this issue.

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
format string Optional

Per-issue override; inherits from the series when absent.

maxLength: 16 bytes
Known values: page, strip
number integer Optional

Issue number. Fractional numbering is expressed via `numberDecimal` so an interlude can sit between 1 and 2 without renumbering anything.

numberDecimal string Optional

Issue number as a decimal string (e.g. "1.5"). Takes precedence over `number` when both are present.

maxLength: 16 bytes
pages array of ref #page Required

The pages, in reading order.

maxLength: 1000 items
publishedAt string datetime Optional

The date the creator claims for this issue. Feeds sort on this, not on when we indexed it.

readingDirection string Optional

Per-issue override; inherits from the series when absent.

maxLength: 16 bytes
Known values: ltr, rtl
series string at-uri Optional

AT-URI of the art.graphik.series this belongs to. Absent for a one-shot.

tags array of string Optional

No description available.

maxLength: 32 items
title string Optional

Display label when the number alone isn't the name.

maxLength: 1000 bytesmaxGraphemes: 100 graphemes
View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "pages",
      "createdAt"
    ],
    "properties": {
      "tags": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 64
        },
        "maxLength": 32
      },
      "cover": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp",
          "image/avif"
        ],
        "maxSize": 10000000
      },
      "pages": {
        "type": "array",
        "items": {
          "ref": "#page",
          "type": "ref"
        },
        "maxLength": 1000,
        "description": "The pages, in reading order."
      },
      "title": {
        "type": "string",
        "maxLength": 1000,
        "description": "Display label when the number alone isn't the name.",
        "maxGraphemes": 100
      },
      "format": {
        "type": "string",
        "maxLength": 16,
        "description": "Per-issue override; inherits from the series when absent.",
        "knownValues": [
          "page",
          "strip"
        ]
      },
      "number": {
        "type": "integer",
        "description": "Issue number. Fractional numbering is expressed via `numberDecimal` so an interlude can sit between 1 and 2 without renumbering anything."
      },
      "series": {
        "type": "string",
        "format": "at-uri",
        "description": "AT-URI of the art.graphik.series this belongs to. Absent for a one-shot."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime"
      },
      "description": {
        "type": "string",
        "maxLength": 10000,
        "description": "Author's note or synopsis for this issue.",
        "maxGraphemes": 1000
      },
      "publishedAt": {
        "type": "string",
        "format": "datetime",
        "description": "The date the creator claims for this issue. Feeds sort on this, not on when we indexed it."
      },
      "contributors": {
        "type": "array",
        "items": {
          "ref": "art.graphik.series#contributor",
          "type": "ref"
        },
        "maxLength": 64
      },
      "contentRating": {
        "type": "string",
        "maxLength": 16,
        "knownValues": [
          "all-ages",
          "teen",
          "mature",
          "explicit"
        ]
      },
      "numberDecimal": {
        "type": "string",
        "maxLength": 16,
        "description": "Issue number as a decimal string (e.g. \"1.5\"). Takes precedence over `number` when both are present."
      },
      "readingDirection": {
        "type": "string",
        "maxLength": 16,
        "description": "Per-issue override; inherits from the series when absent.",
        "knownValues": [
          "ltr",
          "rtl"
        ]
      }
    }
  },
  "description": "One issue or chapter. Points at its series by AT-URI rather than being nested inside it, so a series record does not have to be rewritten (and re-synced) every time a chapter ships, and so an anthology can accept an issue from another repo."
}
page object

No description available.

Properties

alt string Optional

Alt text. Comics are images; without this the work is simply unavailable to a screen-reader user.

maxLength: 2000 bytes
height integer Optional

Intrinsic pixel height.

image blob Required

The page art.

maxSize: 20.0 MB
placeholder string Optional

Tiny inline preview (blurhash or data URI) shown while the full page streams in.

maxLength: 8000 bytes
spread boolean Optional

A two-page spread that should render across the fold rather than being paired with a neighbour.

width integer Optional

Intrinsic pixel width, so a reader can reserve the right box before the image decodes.

View raw schema
{
  "type": "object",
  "required": [
    "image"
  ],
  "properties": {
    "alt": {
      "type": "string",
      "maxLength": 2000,
      "description": "Alt text. Comics are images; without this the work is simply unavailable to a screen-reader user."
    },
    "image": {
      "type": "blob",
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/avif"
      ],
      "maxSize": 20000000,
      "description": "The page art."
    },
    "width": {
      "type": "integer",
      "description": "Intrinsic pixel width, so a reader can reserve the right box before the image decodes."
    },
    "height": {
      "type": "integer",
      "description": "Intrinsic pixel height."
    },
    "spread": {
      "type": "boolean",
      "description": "A two-page spread that should render across the fold rather than being paired with a neighbour."
    },
    "placeholder": {
      "type": "string",
      "maxLength": 8000,
      "description": "Tiny inline preview (blurhash or data URI) shown while the full page streams in."
    }
  }
}

Lexicon Garden

@