art.graphik.issue

graphik.art

{
  "id": "art.graphik.issue",
  "defs": {
    "main": {
      "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": {
      "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."
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against art.graphik.issue

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:3vr6kzmrdua5wlmb755uvjfu
CID
bafyreibeh4efbnmd3jw6z6tj2k72qu6uxwokumfpvrio3npijp65ejakni
Indexed At
2026-08-25 04:51 UTC
AT-URI
at://did:plc:3vr6kzmrdua5wlmb755uvjfu/com.atproto.lexicon.schema/art.graphik.issue

Referenced Schemas (1)

Lexicon Garden

@