{
"id": "network.slices.tools.document",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"title",
"slug",
"blocks",
"createdAt"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"description": "URL-friendly identifier, unique per author"
},
"title": {
"type": "string",
"maxLength": 300,
"description": "Document title"
},
"blocks": {
"type": "array",
"items": {
"refs": [
"#paragraph",
"#heading",
"#codeBlock",
"#quote",
"#tangledEmbed",
"#imageEmbed"
],
"type": "union"
},
"description": "Document content as array of blocks"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"updatedAt": {
"type": "string",
"format": "datetime"
}
}
}
},
"quote": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000
},
"facets": {
"type": "array",
"items": {
"ref": "network.slices.tools.richtext.facet",
"type": "ref"
}
}
},
"description": "A blockquote with optional inline formatting"
},
"heading": {
"type": "object",
"required": [
"level",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 300
},
"level": {
"type": "integer",
"maximum": 3,
"minimum": 1
},
"facets": {
"type": "array",
"items": {
"ref": "network.slices.tools.richtext.facet",
"type": "ref"
}
}
},
"description": "A heading block (h1-h3) with optional inline formatting"
},
"codeBlock": {
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"maxLength": 20000
},
"lang": {
"type": "string",
"maxLength": 50
}
},
"description": "A fenced code block"
},
"paragraph": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 10000
},
"facets": {
"type": "array",
"items": {
"ref": "network.slices.tools.richtext.facet",
"type": "ref"
}
}
},
"description": "A paragraph block with optional inline formatting"
},
"imageEmbed": {
"type": "object",
"required": [
"image"
],
"properties": {
"alt": {
"type": "string",
"maxLength": 1000,
"description": "Alt text for accessibility"
},
"image": {
"type": "blob",
"accept": [
"image/*"
],
"maxSize": 1000000
}
},
"description": "An embedded image with alt text"
},
"tangledEmbed": {
"type": "object",
"required": [
"handle",
"repo"
],
"properties": {
"repo": {
"type": "string",
"maxLength": 300,
"description": "The repository name"
},
"handle": {
"type": "string",
"maxLength": 300,
"description": "The repo owner's handle"
}
},
"description": "An embedded Tangled repo card"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}