handy online tools for AT Protocol
boat.kelinci.net
atproto
bluesky
atcute
typescript
solidjs
1{
2 "$schema": "https://json-schema.org/draft-07/schema",
3 "type": "object",
4 "title": "An atproto lexicon document",
5 "properties": {
6 "lexicon": { "type": "number", "const": 1 },
7 "id": {
8 "type": "string",
9 "pattern": "^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\\.[a-zA-Z]([a-zA-Z]{0,61}[a-zA-Z])?)$"
10 },
11 "revision": { "type": "integer", "minimum": 0 },
12 "description": { "type": "string" },
13 "defs": {
14 "anyOf": [
15 {
16 "type": "object",
17 "properties": {
18 "main": { "$ref": "#/definitions/RecordSchema" },
19 "record": { "not": {} }
20 },
21 "required": ["main"],
22 "additionalProperties": { "$ref": "#/definitions/UserTypeSchema" }
23 },
24 {
25 "type": "object",
26 "properties": {
27 "main": {
28 "anyOf": [
29 { "$ref": "#/definitions/XrpcQuerySchema" },
30 { "$ref": "#/definitions/XrpcProcedureSchema" }
31 ]
32 },
33 "params": { "not": {} },
34 "input": { "not": {} },
35 "output": { "not": {} },
36 "errors": { "not": {} }
37 },
38 "required": ["main"],
39 "additionalProperties": { "$ref": "#/definitions/UserTypeSchema" }
40 },
41 {
42 "type": "object",
43 "properties": {
44 "main": { "$ref": "#/definitions/XrpcSubscriptionSchema" },
45 "params": { "not": {} },
46 "message": { "not": {} }
47 },
48 "required": ["main"],
49 "additionalProperties": { "$ref": "#/definitions/UserTypeSchema" }
50 },
51 {
52 "type": "object",
53 "additionalProperties": { "$ref": "#/definitions/UserTypeSchema" }
54 }
55 ]
56 },
57 "$schema": { "type": "string" }
58 },
59 "required": ["lexicon", "id", "defs"],
60 "additionalProperties": false,
61 "definitions": {
62 "ArraySchema": {
63 "type": "object",
64 "properties": {
65 "type": { "type": "string", "const": "array" },
66 "description": { "type": "string" },
67 "items": {
68 "anyOf": [
69 { "$ref": "#/definitions/PrimitiveSchema" },
70 { "$ref": "#/definitions/IpldTypeSchema" },
71 { "$ref": "#/definitions/BlobSchema" },
72 { "$ref": "#/definitions/RefVariantSchema" }
73 ]
74 },
75 "maxLength": { "type": "integer", "minimum": 0 },
76 "minLength": { "type": "integer", "minimum": 0 }
77 },
78 "required": ["type", "items"],
79 "additionalProperties": false
80 },
81 "BaseStringSchema": {
82 "type": "object",
83 "properties": {
84 "type": { "type": "string", "const": "string" },
85 "description": { "type": "string" },
86 "default": { "type": "string" },
87 "const": { "type": "string" },
88 "enum": { "type": "array", "items": { "type": "string" } },
89 "knownValues": { "type": "array", "items": { "type": "string" } }
90 },
91 "required": ["type"],
92 "additionalProperties": false
93 },
94 "BlobSchema": {
95 "type": "object",
96 "properties": {
97 "type": { "type": "string", "const": "blob" },
98 "description": { "type": "string" },
99 "accept": { "type": "array", "items": { "type": "string" } },
100 "maxSize": { "type": "integer", "minimum": 0 }
101 },
102 "required": ["type"],
103 "additionalProperties": false
104 },
105 "BooleanSchema": {
106 "type": "object",
107 "properties": {
108 "type": { "type": "string", "const": "boolean" },
109 "description": { "type": "string" },
110 "default": { "type": "boolean" },
111 "const": { "type": "boolean" }
112 },
113 "required": ["type"],
114 "additionalProperties": false
115 },
116 "BytesSchema": {
117 "type": "object",
118 "properties": {
119 "type": { "type": "string", "const": "bytes" },
120 "description": { "type": "string" },
121 "maxLength": { "type": "integer", "minimum": 0 },
122 "minLength": { "type": "integer", "minimum": 0 }
123 },
124 "required": ["type"],
125 "additionalProperties": false
126 },
127 "CidLinkSchema": {
128 "type": "object",
129 "properties": {
130 "type": { "type": "string", "const": "cid-link" },
131 "description": { "type": "string" }
132 },
133 "required": ["type"],
134 "additionalProperties": false
135 },
136 "FormattedStringSchema": {
137 "type": "object",
138 "properties": {
139 "type": { "$ref": "#/definitions/BaseStringSchema/properties/type" },
140 "description": {
141 "$ref": "#/definitions/BaseStringSchema/properties/description"
142 },
143 "default": {
144 "$ref": "#/definitions/BaseStringSchema/properties/default"
145 },
146 "const": { "$ref": "#/definitions/BaseStringSchema/properties/const" },
147 "enum": { "$ref": "#/definitions/BaseStringSchema/properties/enum" },
148 "knownValues": {
149 "$ref": "#/definitions/BaseStringSchema/properties/knownValues"
150 },
151 "format": {
152 "type": "string",
153 "enum": [
154 "at-identifier",
155 "at-uri",
156 "cid",
157 "datetime",
158 "did",
159 "handle",
160 "language",
161 "nsid",
162 "record-key",
163 "tid",
164 "uri"
165 ]
166 }
167 },
168 "required": ["type", "format"],
169 "additionalProperties": false
170 },
171 "IntegerSchema": {
172 "type": "object",
173 "properties": {
174 "type": { "type": "string", "const": "integer" },
175 "description": { "type": "string" },
176 "default": { "type": "integer", "minimum": 0 },
177 "const": { "type": "integer", "minimum": 0 },
178 "enum": {
179 "type": "array",
180 "items": { "type": "integer", "minimum": 0 }
181 },
182 "maximum": { "type": "integer", "minimum": 0 },
183 "minimum": { "type": "integer", "minimum": 0 }
184 },
185 "required": ["type"],
186 "additionalProperties": false
187 },
188 "IpldTypeSchema": {
189 "anyOf": [{ "$ref": "#/definitions/BytesSchema" }, { "$ref": "#/definitions/CidLinkSchema" }]
190 },
191 "MainUserTypeSchema": {
192 "anyOf": [
193 { "$ref": "#/definitions/RecordSchema" },
194 { "$ref": "#/definitions/XrpcQuerySchema" },
195 { "$ref": "#/definitions/XrpcProcedureSchema" },
196 { "$ref": "#/definitions/XrpcSubscriptionSchema" },
197 { "$ref": "#/definitions/BlobSchema" },
198 { "$ref": "#/definitions/ArraySchema" },
199 { "$ref": "#/definitions/TokenSchema" },
200 { "$ref": "#/definitions/ObjectSchema" },
201 { "$ref": "#/definitions/BooleanSchema" },
202 { "$ref": "#/definitions/IntegerSchema" },
203 { "$ref": "#/definitions/StringSchema" },
204 { "$ref": "#/definitions/BytesSchema" },
205 { "$ref": "#/definitions/CidLinkSchema" },
206 { "$ref": "#/definitions/UnknownSchema" }
207 ]
208 },
209 "ObjectSchema": {
210 "type": "object",
211 "properties": {
212 "type": { "type": "string", "const": "object" },
213 "description": { "type": "string" },
214 "required": {
215 "type": "array",
216 "items": { "type": "string" },
217 "default": []
218 },
219 "nullable": {
220 "type": "array",
221 "items": { "type": "string" },
222 "default": []
223 },
224 "properties": {
225 "type": "object",
226 "additionalProperties": {
227 "anyOf": [
228 { "$ref": "#/definitions/RefVariantSchema" },
229 { "$ref": "#/definitions/IpldTypeSchema" },
230 { "$ref": "#/definitions/ArraySchema" },
231 { "$ref": "#/definitions/BlobSchema" },
232 { "$ref": "#/definitions/PrimitiveSchema" }
233 ]
234 }
235 }
236 },
237 "required": ["type", "properties"],
238 "additionalProperties": false
239 },
240 "PrimitiveArraySchema": {
241 "type": "object",
242 "properties": {
243 "type": { "$ref": "#/definitions/ArraySchema/properties/type" },
244 "description": {
245 "$ref": "#/definitions/ArraySchema/properties/description"
246 },
247 "items": { "$ref": "#/definitions/PrimitiveSchema" },
248 "maxLength": {
249 "$ref": "#/definitions/ArraySchema/properties/maxLength"
250 },
251 "minLength": {
252 "$ref": "#/definitions/ArraySchema/properties/minLength"
253 }
254 },
255 "required": ["type", "items"],
256 "additionalProperties": false
257 },
258 "PrimitiveSchema": {
259 "anyOf": [
260 { "$ref": "#/definitions/BooleanSchema" },
261 { "$ref": "#/definitions/IntegerSchema" },
262 { "$ref": "#/definitions/StringSchema" },
263 { "$ref": "#/definitions/UnknownSchema" }
264 ]
265 },
266 "RecordSchema": {
267 "type": "object",
268 "properties": {
269 "type": { "type": "string", "const": "record" },
270 "description": { "type": "string" },
271 "key": { "type": "string" },
272 "record": { "$ref": "#/definitions/ObjectSchema" }
273 },
274 "required": ["type", "record"],
275 "additionalProperties": false
276 },
277 "RefSchema": {
278 "type": "object",
279 "properties": {
280 "type": { "type": "string", "const": "ref" },
281 "description": { "type": "string" },
282 "ref": {
283 "type": "string",
284 "minLength": 1,
285 "pattern": "^(?=.)(?:[a-zA-Z](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?:\\.[a-zA-Z](?:[a-zA-Z]{0,61}[a-zA-Z])?))?(?:#[a-zA-Z](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)?$"
286 }
287 },
288 "required": ["type", "ref"],
289 "additionalProperties": false
290 },
291 "RefUnionSchema": {
292 "type": "object",
293 "properties": {
294 "type": { "type": "string", "const": "union" },
295 "description": { "type": "string" },
296 "refs": {
297 "type": "array",
298 "items": { "$ref": "#/definitions/RefSchema/properties/ref" }
299 },
300 "closed": { "type": "boolean", "default": false }
301 },
302 "required": ["type", "refs"],
303 "additionalProperties": false
304 },
305 "RefVariantSchema": {
306 "anyOf": [{ "$ref": "#/definitions/RefSchema" }, { "$ref": "#/definitions/RefUnionSchema" }]
307 },
308 "StringSchema": {
309 "anyOf": [
310 { "$ref": "#/definitions/UnformattedStringSchema" },
311 { "$ref": "#/definitions/FormattedStringSchema" }
312 ]
313 },
314 "TokenSchema": {
315 "type": "object",
316 "properties": {
317 "type": { "type": "string", "const": "token" },
318 "description": { "type": "string" }
319 },
320 "required": ["type"],
321 "additionalProperties": false
322 },
323 "UnformattedStringSchema": {
324 "type": "object",
325 "properties": {
326 "type": { "$ref": "#/definitions/BaseStringSchema/properties/type" },
327 "description": {
328 "$ref": "#/definitions/BaseStringSchema/properties/description"
329 },
330 "default": {
331 "$ref": "#/definitions/BaseStringSchema/properties/default"
332 },
333 "const": { "$ref": "#/definitions/BaseStringSchema/properties/const" },
334 "enum": { "$ref": "#/definitions/BaseStringSchema/properties/enum" },
335 "knownValues": {
336 "$ref": "#/definitions/BaseStringSchema/properties/knownValues"
337 },
338 "format": { "not": {} },
339 "maxLength": { "type": "integer", "exclusiveMinimum": 0 },
340 "minLength": { "type": "integer", "exclusiveMinimum": 0 },
341 "maxGraphemes": { "type": "integer", "exclusiveMinimum": 0 },
342 "minGraphemes": { "type": "integer", "exclusiveMinimum": 0 }
343 },
344 "required": ["type"],
345 "additionalProperties": false
346 },
347 "UnknownSchema": {
348 "type": "object",
349 "properties": {
350 "type": { "type": "string", "const": "unknown" },
351 "description": { "type": "string" }
352 },
353 "required": ["type"],
354 "additionalProperties": false
355 },
356 "UserTypeSchema": {
357 "anyOf": [
358 { "$ref": "#/definitions/BlobSchema" },
359 { "$ref": "#/definitions/ArraySchema" },
360 { "$ref": "#/definitions/TokenSchema" },
361 { "$ref": "#/definitions/ObjectSchema" },
362 { "$ref": "#/definitions/BooleanSchema" },
363 { "$ref": "#/definitions/IntegerSchema" },
364 { "$ref": "#/definitions/StringSchema" },
365 { "$ref": "#/definitions/BytesSchema" },
366 { "$ref": "#/definitions/CidLinkSchema" },
367 { "$ref": "#/definitions/UnknownSchema" }
368 ]
369 },
370 "XrpcBodySchema": {
371 "type": "object",
372 "properties": {
373 "description": { "type": "string" },
374 "encoding": { "type": "string" },
375 "schema": {
376 "anyOf": [{ "$ref": "#/definitions/RefVariantSchema" }, { "$ref": "#/definitions/ObjectSchema" }]
377 }
378 },
379 "required": ["encoding"],
380 "additionalProperties": false
381 },
382 "XrpcErrorSchema": {
383 "type": "object",
384 "properties": {
385 "name": { "type": "string" },
386 "description": { "type": "string" }
387 },
388 "required": ["name"],
389 "additionalProperties": false
390 },
391 "XrpcParametersSchema": {
392 "type": "object",
393 "properties": {
394 "type": { "type": "string", "const": "params" },
395 "description": { "type": "string" },
396 "required": {
397 "type": "array",
398 "items": { "type": "string" },
399 "default": []
400 },
401 "properties": {
402 "type": "object",
403 "additionalProperties": {
404 "anyOf": [
405 { "$ref": "#/definitions/PrimitiveSchema" },
406 { "$ref": "#/definitions/PrimitiveArraySchema" }
407 ]
408 }
409 }
410 },
411 "required": ["type", "properties"],
412 "additionalProperties": false
413 },
414 "XrpcProcedureSchema": {
415 "type": "object",
416 "properties": {
417 "type": { "type": "string", "const": "procedure" },
418 "description": { "type": "string" },
419 "parameters": { "$ref": "#/definitions/XrpcParametersSchema" },
420 "input": { "$ref": "#/definitions/XrpcBodySchema" },
421 "output": { "$ref": "#/definitions/XrpcBodySchema" },
422 "errors": {
423 "type": "array",
424 "items": { "$ref": "#/definitions/XrpcErrorSchema" }
425 }
426 },
427 "required": ["type"],
428 "additionalProperties": false
429 },
430 "XrpcQuerySchema": {
431 "type": "object",
432 "properties": {
433 "type": { "type": "string", "const": "query" },
434 "description": { "type": "string" },
435 "parameters": { "$ref": "#/definitions/XrpcParametersSchema" },
436 "output": { "$ref": "#/definitions/XrpcBodySchema" },
437 "errors": {
438 "type": "array",
439 "items": { "$ref": "#/definitions/XrpcErrorSchema" }
440 }
441 },
442 "required": ["type"],
443 "additionalProperties": false
444 },
445 "XrpcSubscriptionMessageSchema": {
446 "type": "object",
447 "properties": {
448 "description": { "type": "string" },
449 "schema": {
450 "anyOf": [{ "$ref": "#/definitions/RefVariantSchema" }, { "$ref": "#/definitions/ObjectSchema" }]
451 }
452 },
453 "additionalProperties": false
454 },
455 "XrpcSubscriptionSchema": {
456 "type": "object",
457 "properties": {
458 "type": { "type": "string", "const": "subscription" },
459 "description": { "type": "string" },
460 "parameters": { "$ref": "#/definitions/XrpcParametersSchema" },
461 "message": { "$ref": "#/definitions/XrpcSubscriptionMessageSchema" },
462 "errors": {
463 "type": "array",
464 "items": { "$ref": "#/definitions/XrpcErrorSchema" }
465 }
466 },
467 "required": ["type"],
468 "additionalProperties": false
469 }
470 }
471}