atproto blogging
1{
2 "lexicon": 1,
3 "id": "sh.weaver.embed.images",
4 "description": "A set of images embedded in a blog post.",
5 "defs": {
6 "main": {
7 "type": "object",
8 "required": ["images"],
9 "properties": {
10 "images": {
11 "type": "array",
12 "items": { "type": "ref", "ref": "#image" },
13 "maxLength": 48
14 }
15 }
16 },
17 "image": {
18 "type": "object",
19 "required": ["image", "alt"],
20 "properties": {
21 "name": {
22 "type": "string",
23 "maxLength": 128
24 },
25 "image": {
26 "type": "blob",
27 "accept": ["image/*"],
28 "maxSize": 3000000
29 },
30 "alt": {
31 "type": "string",
32 "description": "alt text description of the image"
33 },
34 "blurhash": {
35 "type": "string",
36 "maxLength": 32,
37 "description": "Blurhash string for the image, used for low-resolution placeholders. This must be a valid Blurhash string."
38 },
39 "dimensions": {
40 "type": "union",
41 "refs": [
42 "app.bsky.embed.defs#aspectRatio",
43 "sh.weaver.embed.defs#percentSize",
44 "sh.weaver.embed.defs#pixelSize"
45 ]
46 }
47 }
48 },
49 "view": {
50 "type": "object",
51 "required": ["images"],
52 "properties": {
53 "images": {
54 "type": "array",
55 "items": {
56 "type": "ref",
57 "ref": "#viewImage"
58 },
59 "maxLength": 48
60 }
61 }
62 },
63 "viewImage": {
64 "type": "object",
65 "required": ["thumb", "fullsize", "alt"],
66 "properties": {
67 "name": {
68 "type": "string",
69 "maxLength": 128
70 },
71 "alt": {
72 "type": "string",
73 "description": "Alt text description of the image, for accessibility."
74 },
75 "dimensions": {
76 "type": "union",
77 "refs": [
78 "app.bsky.embed.defs#aspectRatio",
79 "sh.weaver.embed.defs#percentSize",
80 "sh.weaver.embed.defs#pixelSize"
81 ]
82 },
83 "fullsize": {
84 "type": "string",
85 "description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View.",
86 "format": "uri"
87 },
88 "thumb": {
89 "type": "string",
90 "description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View.",
91 "format": "uri"
92 }
93 }
94 }
95 }
96}