{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A bookmark: the author files a URL, DOI or content hash under tags, with an optional title and note. Filing is not endorsing (that is monster.attest.vote). One per author per subject; the record key is a base32 sha256 of the subject; writing again updates it; delete to remove.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "note": {
            "maxGraphemes": 2000,
            "maxLength": 8000,
            "type": "string"
          },
          "signatures": {
            "description": "Inline signatures per the ATProtocol Attestation Specification; attest requires one from the author's device key.",
            "ref": "app.certified.signature.defs#list",
            "type": "ref"
          },
          "subject": {
            "description": "What is bookmarked: a normalised https URL, a doi: URI or a sha256: URI.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          },
          "tags": {
            "description": "Lowercase words; letters, digits and hyphens.",
            "items": {
              "maxGraphemes": 32,
              "maxLength": 64,
              "type": "string"
            },
            "maxLength": 12,
            "type": "array"
          },
          "title": {
            "maxGraphemes": 300,
            "maxLength": 1000,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "monster.attest.bookmark",
  "lexicon": 1
}
