app.standard-reader.defs

standard-reader.app

Schema Diff

+56 -0

From

CID
bafyreifez46hn75...
Indexed At
2026-07-21 06:48 UTC
View this version

To

CID
bafyreiegzkudsys...
Indexed At
2026-07-21 07:06 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 18 non-breaking changes.

Breaking Changes (4)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.uri", kind: "prop", name: Some("uri") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.name", kind: "prop", name: Some("name") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.publications", kind: "prop", name: Some("publications") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#cursorPageProfiles", src: "app.standard-reader.defs#cursorPageProfiles", tgt: "app.standard-reader.defs#cursorPageProfiles.items", kind: "prop", name: Some("items") }
Non-Breaking Changes (18)
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.cursor" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.items" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.items:items" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.createdAt" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.description" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.name" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.publications" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.publications:items" }
  • AddedVertex AddedVertex { vertex_id: "app.standard-reader.defs#listView.uri" }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles", tgt: "app.standard-reader.defs#cursorPageProfiles.cursor", kind: "prop", name: Some("cursor") }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles.items", tgt: "app.standard-reader.defs#cursorPageProfiles.items:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles.items:items", tgt: "app.standard-reader.defs#profileView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.createdAt", kind: "prop", name: Some("createdAt") }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#listView.publications", tgt: "app.standard-reader.defs#listView.publications:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.standard-reader.defs#listView.publications:items", tgt: "app.standard-reader.defs#publicationView", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.cursor" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.items" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#cursorPageProfiles.items:items" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.createdAt" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.description" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.name" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.publications" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.publications:items" }
  • AddedVertex { vertex_id: "app.standard-reader.defs#listView.uri" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#cursorPageProfiles", src: "app.standard-reader.defs#cursorPageProfiles", tgt: "app.standard-reader.defs#cursorPageProfiles.items", kind: "prop", name: Some("items") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.uri", kind: "prop", name: Some("uri") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.name", kind: "prop", name: Some("name") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.standard-reader.defs#listView", src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.publications", kind: "prop", name: Some("publications") }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles", tgt: "app.standard-reader.defs#cursorPageProfiles.cursor", kind: "prop", name: Some("cursor") }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles.items", tgt: "app.standard-reader.defs#cursorPageProfiles.items:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#cursorPageProfiles.items:items", tgt: "app.standard-reader.defs#profileView", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.createdAt", kind: "prop", name: Some("createdAt") }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#listView", tgt: "app.standard-reader.defs#listView.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#listView.publications", tgt: "app.standard-reader.defs#listView.publications:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.standard-reader.defs#listView.publications:items", tgt: "app.standard-reader.defs#publicationView", kind: "ref", name: None }
1 1
{
2 2
  "id": "app.standard-reader.defs",
3 3
  "defs": {
4 +
    "listView": {
5 +
      "type": "object",
6 +
      "required": [
7 +
        "uri",
8 +
        "name",
9 +
        "publications"
10 +
      ],
11 +
      "properties": {
12 +
        "uri": {
13 +
          "type": "string",
14 +
          "format": "at-uri"
15 +
        },
16 +
        "name": {
17 +
          "type": "string",
18 +
          "maxLength": 128
19 +
        },
20 +
        "createdAt": {
21 +
          "type": "string",
22 +
          "format": "datetime",
23 +
          "nullable": true
24 +
        },
25 +
        "description": {
26 +
          "type": "string",
27 +
          "nullable": true,
28 +
          "maxLength": 4096
29 +
        },
30 +
        "publications": {
31 +
          "type": "array",
32 +
          "items": {
33 +
            "ref": "app.standard-reader.defs#publicationView",
34 +
            "type": "ref"
35 +
          }
36 +
        }
37 +
      },
38 +
      "description": "A reader-authored publication list (app.standard-reader.list) with its member publications resolved."
39 +
    },
4 40
    "profileView": {
5 41
      "type": "object",
6 42
      "required": [
7 43
        "did"
8 44
      ],
9 45
      "properties": {
10 46
        "did": {
11 47
          "type": "string",
12 48
          "format": "did"
13 49
        },
14 50
        "handle": {
15 51
          "type": "string",
16 52
          "nullable": true,
17 53
          "maxLength": 128
18 54
        },
19 55
        "avatarUrl": {
20 56
          "type": "string",
21 57
          "format": "uri",
22 58
          "nullable": true
23 59
        },
24 60
        "bannerUrl": {
25 61
          "type": "string",
26 62
          "format": "uri",
27 63
          "nullable": true
28 64
        },
29 65
        "description": {
30 66
          "type": "string",
31 67
          "nullable": true,
32 68
          "maxLength": 4096
33 69
        },
34 70
        "displayName": {
35 71
          "type": "string",
36 72
          "nullable": true,
37 73
          "maxLength": 128
38 74
        }
39 75
      }
40 76
    },
41 77
    "documentView": {
42 78
      "type": "object",
43 79
      "required": [
44 80
        "uri",
45 81
        "did",
46 82
        "title",
47 83
        "publishedAt",
48 84
        "recommendCount",
49 85
        "commentCount",
50 86
        "hasRenderableBody",
51 87
        "isRead"
52 88
      ],
53 89
      "properties": {
54 90
        "did": {
55 91
          "type": "string",
56 92
          "format": "did"
57 93
        },
58 94
        "uri": {
59 95
          "type": "string",
60 96
          "format": "at-uri"
61 97
        },
62 98
        "path": {
63 99
          "type": "string",
64 100
          "nullable": true,
65 101
          "maxLength": 2048
66 102
        },
67 103
        "tags": {
68 104
          "type": "array",
69 105
          "items": {
70 106
            "type": "string",
71 107
            "maxLength": 128
72 108
          },
73 109
          "nullable": true
74 110
        },
75 111
        "title": {
76 112
          "type": "string",
77 113
          "maxLength": 512
78 114
        },
79 115
        "isRead": {
80 116
          "type": "boolean"
81 117
        },
82 118
        "content": {
83 119
          "type": "unknown",
84 120
          "description": "Renderable body payload (the content-union of the site.standard.document record). Only populated by getDocument; omitted from feed and search views."
85 121
        },
86 122
        "featured": {
87 123
          "type": "boolean"
88 124
        },
89 125
        "description": {
90 126
          "type": "string",
91 127
          "nullable": true,
92 128
          "maxLength": 4096
93 129
        },
94 130
        "publishedAt": {
95 131
          "type": "string",
96 132
          "format": "datetime"
97 133
        },
98 134
        "canonicalUrl": {
99 135
          "type": "string",
100 136
          "format": "uri",
101 137
          "nullable": true
102 138
        },
103 139
        "commentCount": {
104 140
          "type": "integer"
105 141
        },
106 142
        "contentFormat": {
107 143
          "type": "string",
108 144
          "maxLength": 256,
109 145
          "description": "Explicit content-union $type, used when the body payload lacks one. Only populated by getDocument."
110 146
        },
111 147
        "coverImageUrl": {
112 148
          "type": "string",
113 149
          "format": "uri",
114 150
          "nullable": true
115 151
        },
116 152
        "publicationUri": {
117 153
          "type": "string",
118 154
          "format": "at-uri",
119 155
          "nullable": true
120 156
        },
121 157
        "recommendCount": {
122 158
          "type": "integer"
123 159
        },
124 160
        "publicationName": {
125 161
          "type": "string",
126 162
          "nullable": true,
127 163
          "maxLength": 128
128 164
        },
129 165
        "searchTitleHtml": {
130 166
          "type": "string",
131 167
          "nullable": true,
132 168
          "maxLength": 1024
133 169
        },
134 170
        "publicationTopic": {
135 171
          "type": "string",
136 172
          "nullable": true,
137 173
          "maxLength": 128
138 174
        },
139 175
        "hasRenderableBody": {
140 176
          "type": "boolean"
141 177
        },
142 178
        "searchSnippetHtml": {
143 179
          "type": "string",
144 180
          "nullable": true,
145 181
          "maxLength": 8192
146 182
        },
147 183
        "publicationIconUrl": {
148 184
          "type": "string",
149 185
          "format": "uri",
150 186
          "nullable": true
151 187
        },
152 188
        "publicationBannerUrl": {
153 189
          "type": "string",
154 190
          "format": "uri",
155 191
          "nullable": true
156 192
        },
157 193
        "publicationOwnerHandle": {
158 194
          "type": "string",
159 195
          "nullable": true,
160 196
          "maxLength": 128
161 197
        },
162 198
        "publicationOwnerAvatarUrl": {
163 199
          "type": "string",
164 200
          "format": "uri",
165 201
          "nullable": true
166 202
        }
167 203
      },
168 204
      "description": "An article as shown in feed rows and search results (metadata only)."
169 205
    },
170 206
    "publicationView": {
171 207
      "type": "object",
172 208
      "required": [
173 209
        "uri",
174 210
        "did",
175 211
        "name",
176 212
        "url",
177 213
        "subscriberCount",
178 214
        "documentCount"
179 215
      ],
180 216
      "properties": {
181 217
        "did": {
182 218
          "type": "string",
183 219
          "format": "did"
184 220
        },
185 221
        "uri": {
186 222
          "type": "string",
187 223
          "format": "at-uri"
188 224
        },
189 225
        "url": {
190 226
          "type": "string",
191 227
          "format": "uri"
192 228
        },
193 229
        "name": {
194 230
          "type": "string",
195 231
          "maxLength": 128
196 232
        },
197 233
        "topic": {
198 234
          "type": "string",
199 235
          "nullable": true,
200 236
          "maxLength": 128
201 237
        },
202 238
        "iconUrl": {
203 239
          "type": "string",
204 240
          "format": "uri",
205 241
          "nullable": true
206 242
        },
207 243
        "verified": {
208 244
          "type": "boolean"
209 245
        },
210 246
        "description": {
211 247
          "type": "string",
212 248
          "nullable": true,
213 249
          "maxLength": 4096
214 250
        },
215 251
        "ownerHandle": {
216 252
          "type": "string",
217 253
          "nullable": true,
218 254
          "maxLength": 128
219 255
        },
220 256
        "documentCount": {
221 257
          "type": "integer"
222 258
        },
223 259
        "lastDocumentAt": {
224 260
          "type": "string",
225 261
          "format": "datetime",
226 262
          "nullable": true
227 263
        },
228 264
        "ownerAvatarUrl": {
229 265
          "type": "string",
230 266
          "format": "uri",
231 267
          "nullable": true
232 268
        },
233 269
        "searchNameHtml": {
234 270
          "type": "string",
235 271
          "nullable": true,
236 272
          "maxLength": 512
237 273
        },
238 274
        "subscriberCount": {
239 275
          "type": "integer"
240 276
        },
241 277
        "searchSnippetHtml": {
242 278
          "type": "string",
243 279
          "nullable": true,
244 280
          "maxLength": 8192
245 281
        }
246 282
      },
247 283
      "description": "A publication as shown in directory cards and profile headers."
248 284
    },
285 +
    "cursorPageProfiles": {
286 +
      "type": "object",
287 +
      "required": [
288 +
        "items"
289 +
      ],
290 +
      "properties": {
291 +
        "items": {
292 +
          "type": "array",
293 +
          "items": {
294 +
            "ref": "app.standard-reader.defs#profileView",
295 +
            "type": "ref"
296 +
          }
297 +
        },
298 +
        "cursor": {
299 +
          "type": "string",
300 +
          "nullable": true,
301 +
          "maxLength": 8192
302 +
        }
303 +
      }
304 +
    },
249 305
    "resolveViewArticle": {
250 306
      "type": "object",
251 307
      "required": [
252 308
        "kind",
253 309
        "documentUri",
254 310
        "title",
255 311
        "readerUrl",
256 312
        "recommendCount",
257 313
        "commentCount"
258 314
      ],
259 315
      "properties": {
260 316
        "kind": {
261 317
          "type": "string",
262 318
          "const": "article",
263 319
          "maxLength": 64
264 320
        },
265 321
        "title": {
266 322
          "type": "string",
267 323
          "maxLength": 512
268 324
        },
269 325
        "isRead": {
270 326
          "type": "boolean"
271 327
        },
272 328
        "readerUrl": {
273 329
          "type": "string",
274 330
          "format": "uri"
275 331
        },
276 332
        "authorName": {
277 333
          "type": "string",
278 334
          "nullable": true,
279 335
          "maxLength": 128
280 336
        },
281 337
        "documentUri": {
282 338
          "type": "string",
283 339
          "format": "at-uri"
284 340
        },
285 341
        "isFollowing": {
286 342
          "type": "boolean"
287 343
        },
288 344
        "publishedAt": {
289 345
          "type": "string",
290 346
          "format": "datetime",
291 347
          "nullable": true
292 348
        },
293 349
        "authorHandle": {
294 350
          "type": "string",
295 351
          "nullable": true,
296 352
          "maxLength": 128
297 353
        },
298 354
        "canonicalUrl": {
299 355
          "type": "string",
300 356
          "format": "uri",
301 357
          "nullable": true
302 358
        },
303 359
        "commentCount": {
304 360
          "type": "integer"
305 361
        },
306 362
        "isBookmarked": {
307 363
          "type": "boolean"
308 364
        },
309 365
        "publicationUri": {
310 366
          "type": "string",
311 367
          "format": "at-uri",
312 368
          "nullable": true
313 369
        },
314 370
        "readingMinutes": {
315 371
          "type": "integer",
316 372
          "nullable": true
317 373
        },
318 374
        "recommendCount": {
319 375
          "type": "integer"
320 376
        },
321 377
        "authorAvatarUrl": {
322 378
          "type": "string",
323 379
          "format": "uri",
324 380
          "nullable": true
325 381
        },
326 382
        "publicationName": {
327 383
          "type": "string",
328 384
          "nullable": true,
329 385
          "maxLength": 128
330 386
        },
331 387
        "publicationHandle": {
332 388
          "type": "string",
333 389
          "nullable": true,
334 390
          "maxLength": 128
335 391
        },
336 392
        "publicationIconUrl": {
337 393
          "type": "string",
338 394
          "format": "uri",
339 395
          "nullable": true
340 396
        },
341 397
        "publicationReaderUrl": {
342 398
          "type": "string",
343 399
          "format": "uri",
344 400
          "nullable": true
345 401
        },
346 402
        "publicationOwnerAvatarUrl": {
347 403
          "type": "string",
348 404
          "format": "uri",
349 405
          "nullable": true
350 406
        },
351 407
        "publicationSubscriberCount": {
352 408
          "type": "integer",
353 409
          "nullable": true
354 410
        }
355 411
      }
356 412
    },
357 413
    "resolveViewUnknown": {
358 414
      "type": "object",
359 415
      "required": [
360 416
        "kind"
361 417
      ],
362 418
      "properties": {
363 419
        "kind": {
364 420
          "type": "string",
365 421
          "const": "unknown",
366 422
          "maxLength": 64
367 423
        }
368 424
      }
369 425
    },
370 426
    "cursorPageDocuments": {
371 427
      "type": "object",
372 428
      "required": [
373 429
        "items"
374 430
      ],
375 431
      "properties": {
376 432
        "items": {
377 433
          "type": "array",
378 434
          "items": {
379 435
            "ref": "app.standard-reader.defs#documentView",
380 436
            "type": "ref"
381 437
          }
382 438
        },
383 439
        "cursor": {
384 440
          "type": "string",
385 441
          "nullable": true,
386 442
          "maxLength": 8192
387 443
        }
388 444
      }
389 445
    },
390 446
    "resolveViewReaderLink": {
391 447
      "type": "object",
392 448
      "required": [
393 449
        "kind",
394 450
        "readerUrl"
395 451
      ],
396 452
      "properties": {
397 453
        "kind": {
398 454
          "type": "string",
399 455
          "const": "reader-link",
400 456
          "maxLength": 64
401 457
        },
402 458
        "readerUrl": {
403 459
          "type": "string",
404 460
          "format": "uri",
405 461
          "maxLength": 2048
406 462
        }
407 463
      }
408 464
    },
409 465
    "cursorPagePublications": {
410 466
      "type": "object",
411 467
      "required": [
412 468
        "items"
413 469
      ],
414 470
      "properties": {
415 471
        "items": {
416 472
          "type": "array",
417 473
          "items": {
418 474
            "ref": "app.standard-reader.defs#publicationView",
419 475
            "type": "ref"
420 476
          }
421 477
        },
422 478
        "cursor": {
423 479
          "type": "string",
424 480
          "nullable": true,
425 481
          "maxLength": 8192
426 482
        }
427 483
      }
428 484
    },
429 485
    "resolveViewPublication": {
430 486
      "type": "object",
431 487
      "required": [
432 488
        "kind",
433 489
        "publicationUri",
434 490
        "name",
435 491
        "readerUrl"
436 492
      ],
437 493
      "properties": {
438 494
        "kind": {
439 495
          "type": "string",
440 496
          "const": "publication",
441 497
          "maxLength": 64
442 498
        },
443 499
        "name": {
444 500
          "type": "string",
445 501
          "maxLength": 128
446 502
        },
447 503
        "handle": {
448 504
          "type": "string",
449 505
          "nullable": true,
450 506
          "maxLength": 128
451 507
        },
452 508
        "iconUrl": {
453 509
          "type": "string",
454 510
          "format": "uri",
455 511
          "nullable": true
456 512
        },
457 513
        "siteUrl": {
458 514
          "type": "string",
459 515
          "format": "uri",
460 516
          "nullable": true
461 517
        },
462 518
        "readerUrl": {
463 519
          "type": "string",
464 520
          "format": "uri"
465 521
        },
466 522
        "description": {
467 523
          "type": "string",
468 524
          "nullable": true,
469 525
          "maxLength": 4096
470 526
        },
471 527
        "isFollowing": {
472 528
          "type": "boolean"
473 529
        },
474 530
        "ownerAvatarUrl": {
475 531
          "type": "string",
476 532
          "format": "uri",
477 533
          "nullable": true
478 534
        },
479 535
        "publicationUri": {
480 536
          "type": "string",
481 537
          "format": "at-uri"
482 538
        },
483 539
        "subscriberCount": {
484 540
          "type": "integer",
485 541
          "nullable": true
486 542
        }
487 543
      }
488 544
    }
489 545
  },
490 546
  "$type": "com.atproto.lexicon.schema",
491 547
  "lexicon": 1
492 548
}

Compare Other Versions

Lexicon Garden

@