atproto blogging
1{
2 "lexicon": 1,
3 "id": "blog.pckt.block.image",
4 "description": "An image block for displaying visual content. Supports both external URLs and AT Protocol blob storage with automatic aspect ratio preservation.",
5 "defs": {
6 "aspectRatio": {
7 "type": "object",
8 "description": "Image aspect ratio represented as width and height dimensions",
9 "required": [
10 "width",
11 "height"
12 ],
13 "properties": {
14 "height": {
15 "type": "integer",
16 "description": "Height component of aspect ratio",
17 "minimum": 1
18 },
19 "width": {
20 "type": "integer",
21 "description": "Width component of aspect ratio",
22 "minimum": 1
23 }
24 }
25 },
26 "imageAttrs": {
27 "type": "object",
28 "description": "Image attributes",
29 "required": [
30 "src"
31 ],
32 "properties": {
33 "align": {
34 "type": "string",
35 "description": "Horizontal alignment of the image within its container",
36 "enum": [
37 "left",
38 "center",
39 "right"
40 ]
41 },
42 "alt": {
43 "type": "string",
44 "description": "Alternative text description for accessibility and screen readers",
45 "maxLength": 1000,
46 "maxGraphemes": 300
47 },
48 "aspectRatio": {
49 "type": "ref",
50 "description": "Image aspect ratio for proper layout before loading",
51 "ref": "#aspectRatio"
52 },
53 "blob": {
54 "type": "blob",
55 "description": "AT Protocol blob reference (10MB max). Used when image is uploaded to PDS.",
56 "accept": [
57 "image/*"
58 ],
59 "maxSize": 10000000
60 },
61 "src": {
62 "type": "string",
63 "description": "Image source URL or blob reference (blob:CID format for AT Protocol blobs)",
64 "maxLength": 2000
65 },
66 "title": {
67 "type": "string",
68 "description": "Optional image title displayed on hover",
69 "maxLength": 500,
70 "maxGraphemes": 200
71 }
72 }
73 },
74 "main": {
75 "type": "object",
76 "required": [
77 "attrs"
78 ],
79 "properties": {
80 "attrs": {
81 "type": "ref",
82 "description": "Image attributes",
83 "ref": "#imageAttrs"
84 }
85 }
86 }
87 }
88}