app.bsky.feed.defs
Schema Diff
+1 -0
Compatibility Analysis
Breaking Changes Detected
3 breaking changes, 5 non-breaking changes.
Breaking Changes (3)
- RemovedEdge RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant2", kind: "variant", name: Some("app.bsky.embed.external#view") }
- RemovedEdge RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant3", kind: "variant", name: Some("app.bsky.embed.record#view") }
- RemovedEdge RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant4", kind: "variant", name: Some("app.bsky.embed.recordWithMedia#view") }
Non-Breaking Changes (5)
- AddedVertex AddedVertex { vertex_id: "app.bsky.feed.defs#postView.embed:variant5" }
- AddedEdge AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant2", kind: "variant", name: Some("app.bsky.embed.gallery#view") }
- AddedEdge AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant3", kind: "variant", name: Some("app.bsky.embed.external#view") }
- AddedEdge AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant4", kind: "variant", name: Some("app.bsky.embed.record#view") }
- AddedEdge AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant5", kind: "variant", name: Some("app.bsky.embed.recordWithMedia#view") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.bsky.feed.defs#postView.embed:variant5" }
Additional Notes
- Breaking: RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant2", kind: "variant", name: Some("app.bsky.embed.external#view") }
- Breaking: RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant3", kind: "variant", name: Some("app.bsky.embed.record#view") }
- Breaking: RemovedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant4", kind: "variant", name: Some("app.bsky.embed.recordWithMedia#view") }
- Non-breaking: AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant2", kind: "variant", name: Some("app.bsky.embed.gallery#view") }
- Non-breaking: AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant3", kind: "variant", name: Some("app.bsky.embed.external#view") }
- Non-breaking: AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant4", kind: "variant", name: Some("app.bsky.embed.record#view") }
- Non-breaking: AddedEdge { src: "app.bsky.feed.defs#postView.embed", tgt: "app.bsky.feed.defs#postView.embed:variant5", kind: "variant", name: Some("app.bsky.embed.recordWithMedia#view") }
1
1
{
2
2
"id": "app.bsky.feed.defs",
3
3
"defs": {
4
4
"postView": {
5
5
"type": "object",
6
6
"required": [
7
7
"uri",
8
8
"cid",
9
9
"author",
10
10
"record",
11
11
"indexedAt"
12
12
],
13
13
"properties": {
14
14
"cid": {
15
15
"type": "string",
16
16
"format": "cid"
17
17
},
18
18
"uri": {
19
19
"type": "string",
20
20
"format": "at-uri"
21
21
},
22
22
"debug": {
23
23
"type": "unknown",
24
24
"description": "Debug information for internal development"
25
25
},
26
26
"embed": {
27
27
"refs": [
28
28
"app.bsky.embed.images#view",
29
29
"app.bsky.embed.video#view",
30
+
"app.bsky.embed.gallery#view",
30
31
"app.bsky.embed.external#view",
31
32
"app.bsky.embed.record#view",
32
33
"app.bsky.embed.recordWithMedia#view"
33
34
],
34
35
"type": "union"
35
36
},
36
37
"author": {
37
38
"ref": "app.bsky.actor.defs#profileViewBasic",
38
39
"type": "ref"
39
40
},
40
41
"labels": {
41
42
"type": "array",
42
43
"items": {
43
44
"ref": "com.atproto.label.defs#label",
44
45
"type": "ref"
45
46
}
46
47
},
47
48
"record": {
48
49
"type": "unknown"
49
50
},
50
51
"viewer": {
51
52
"ref": "#viewerState",
52
53
"type": "ref"
53
54
},
54
55
"indexedAt": {
55
56
"type": "string",
56
57
"format": "datetime"
57
58
},
58
59
"likeCount": {
59
60
"type": "integer"
60
61
},
61
62
"quoteCount": {
62
63
"type": "integer"
63
64
},
64
65
"replyCount": {
65
66
"type": "integer"
66
67
},
67
68
"threadgate": {
68
69
"ref": "#threadgateView",
69
70
"type": "ref"
70
71
},
71
72
"repostCount": {
72
73
"type": "integer"
73
74
},
74
75
"bookmarkCount": {
75
76
"type": "integer"
76
77
}
77
78
}
78
79
},
79
80
"replyRef": {
80
81
"type": "object",
81
82
"required": [
82
83
"root",
83
84
"parent"
84
85
],
85
86
"properties": {
86
87
"root": {
87
88
"refs": [
88
89
"#postView",
89
90
"#notFoundPost",
90
91
"#blockedPost"
91
92
],
92
93
"type": "union"
93
94
},
94
95
"parent": {
95
96
"refs": [
96
97
"#postView",
97
98
"#notFoundPost",
98
99
"#blockedPost"
99
100
],
100
101
"type": "union"
101
102
},
102
103
"grandparentAuthor": {
103
104
"ref": "app.bsky.actor.defs#profileViewBasic",
104
105
"type": "ref",
105
106
"description": "When parent is a reply to another post, this is the author of that post."
106
107
}
107
108
}
108
109
},
109
110
"reasonPin": {
110
111
"type": "object",
111
112
"properties": {}
112
113
},
113
114
"blockedPost": {
114
115
"type": "object",
115
116
"required": [
116
117
"uri",
117
118
"blocked",
118
119
"author"
119
120
],
120
121
"properties": {
121
122
"uri": {
122
123
"type": "string",
123
124
"format": "at-uri"
124
125
},
125
126
"author": {
126
127
"ref": "#blockedAuthor",
127
128
"type": "ref"
128
129
},
129
130
"blocked": {
130
131
"type": "boolean",
131
132
"const": true
132
133
}
133
134
}
134
135
},
135
136
"interaction": {
136
137
"type": "object",
137
138
"properties": {
138
139
"item": {
139
140
"type": "string",
140
141
"format": "at-uri"
141
142
},
142
143
"event": {
143
144
"type": "string",
144
145
"knownValues": [
145
146
"app.bsky.feed.defs#requestLess",
146
147
"app.bsky.feed.defs#requestMore",
147
148
"app.bsky.feed.defs#clickthroughItem",
148
149
"app.bsky.feed.defs#clickthroughAuthor",
149
150
"app.bsky.feed.defs#clickthroughReposter",
150
151
"app.bsky.feed.defs#clickthroughEmbed",
151
152
"app.bsky.feed.defs#interactionSeen",
152
153
"app.bsky.feed.defs#interactionLike",
153
154
"app.bsky.feed.defs#interactionRepost",
154
155
"app.bsky.feed.defs#interactionReply",
155
156
"app.bsky.feed.defs#interactionQuote",
156
157
"app.bsky.feed.defs#interactionShare"
157
158
]
158
159
},
159
160
"reqId": {
160
161
"type": "string",
161
162
"maxLength": 100,
162
163
"description": "Unique identifier per request that may be passed back alongside interactions."
163
164
},
164
165
"feedContext": {
165
166
"type": "string",
166
167
"maxLength": 2000,
167
168
"description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."
168
169
}
169
170
}
170
171
},
171
172
"requestLess": {
172
173
"type": "token",
173
174
"description": "Request that less content like the given feed item be shown in the feed"
174
175
},
175
176
"requestMore": {
176
177
"type": "token",
177
178
"description": "Request that more content like the given feed item be shown in the feed"
178
179
},
179
180
"viewerState": {
180
181
"type": "object",
181
182
"properties": {
182
183
"like": {
183
184
"type": "string",
184
185
"format": "at-uri"
185
186
},
186
187
"pinned": {
187
188
"type": "boolean"
188
189
},
189
190
"repost": {
190
191
"type": "string",
191
192
"format": "at-uri"
192
193
},
193
194
"bookmarked": {
194
195
"type": "boolean"
195
196
},
196
197
"threadMuted": {
197
198
"type": "boolean"
198
199
},
199
200
"replyDisabled": {
200
201
"type": "boolean"
201
202
},
202
203
"embeddingDisabled": {
203
204
"type": "boolean"
204
205
}
205
206
},
206
207
"description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."
207
208
},
208
209
"feedViewPost": {
209
210
"type": "object",
210
211
"required": [
211
212
"post"
212
213
],
213
214
"properties": {
214
215
"post": {
215
216
"ref": "#postView",
216
217
"type": "ref"
217
218
},
218
219
"reply": {
219
220
"ref": "#replyRef",
220
221
"type": "ref"
221
222
},
222
223
"reqId": {
223
224
"type": "string",
224
225
"maxLength": 100,
225
226
"description": "Unique identifier per request that may be passed back alongside interactions."
226
227
},
227
228
"reason": {
228
229
"refs": [
229
230
"#reasonRepost",
230
231
"#reasonPin"
231
232
],
232
233
"type": "union"
233
234
},
234
235
"feedContext": {
235
236
"type": "string",
236
237
"maxLength": 2000,
237
238
"description": "Context provided by feed generator that may be passed back alongside interactions."
238
239
}
239
240
}
240
241
},
241
242
"notFoundPost": {
242
243
"type": "object",
243
244
"required": [
244
245
"uri",
245
246
"notFound"
246
247
],
247
248
"properties": {
248
249
"uri": {
249
250
"type": "string",
250
251
"format": "at-uri"
251
252
},
252
253
"notFound": {
253
254
"type": "boolean",
254
255
"const": true
255
256
}
256
257
}
257
258
},
258
259
"reasonRepost": {
259
260
"type": "object",
260
261
"required": [
261
262
"by",
262
263
"indexedAt"
263
264
],
264
265
"properties": {
265
266
"by": {
266
267
"ref": "app.bsky.actor.defs#profileViewBasic",
267
268
"type": "ref"
268
269
},
269
270
"cid": {
270
271
"type": "string",
271
272
"format": "cid"
272
273
},
273
274
"uri": {
274
275
"type": "string",
275
276
"format": "at-uri"
276
277
},
277
278
"indexedAt": {
278
279
"type": "string",
279
280
"format": "datetime"
280
281
}
281
282
}
282
283
},
283
284
"blockedAuthor": {
284
285
"type": "object",
285
286
"required": [
286
287
"did"
287
288
],
288
289
"properties": {
289
290
"did": {
290
291
"type": "string",
291
292
"format": "did"
292
293
},
293
294
"viewer": {
294
295
"ref": "app.bsky.actor.defs#viewerState",
295
296
"type": "ref"
296
297
}
297
298
}
298
299
},
299
300
"generatorView": {
300
301
"type": "object",
301
302
"required": [
302
303
"uri",
303
304
"cid",
304
305
"did",
305
306
"creator",
306
307
"displayName",
307
308
"indexedAt"
308
309
],
309
310
"properties": {
310
311
"cid": {
311
312
"type": "string",
312
313
"format": "cid"
313
314
},
314
315
"did": {
315
316
"type": "string",
316
317
"format": "did"
317
318
},
318
319
"uri": {
319
320
"type": "string",
320
321
"format": "at-uri"
321
322
},
322
323
"avatar": {
323
324
"type": "string",
324
325
"format": "uri"
325
326
},
326
327
"labels": {
327
328
"type": "array",
328
329
"items": {
329
330
"ref": "com.atproto.label.defs#label",
330
331
"type": "ref"
331
332
}
332
333
},
333
334
"viewer": {
334
335
"ref": "#generatorViewerState",
335
336
"type": "ref"
336
337
},
337
338
"creator": {
338
339
"ref": "app.bsky.actor.defs#profileView",
339
340
"type": "ref"
340
341
},
341
342
"indexedAt": {
342
343
"type": "string",
343
344
"format": "datetime"
344
345
},
345
346
"likeCount": {
346
347
"type": "integer",
347
348
"minimum": 0
348
349
},
349
350
"contentMode": {
350
351
"type": "string",
351
352
"knownValues": [
352
353
"app.bsky.feed.defs#contentModeUnspecified",
353
354
"app.bsky.feed.defs#contentModeVideo"
354
355
]
355
356
},
356
357
"description": {
357
358
"type": "string",
358
359
"maxLength": 3000,
359
360
"maxGraphemes": 300
360
361
},
361
362
"displayName": {
362
363
"type": "string"
363
364
},
364
365
"descriptionFacets": {
365
366
"type": "array",
366
367
"items": {
367
368
"ref": "app.bsky.richtext.facet",
368
369
"type": "ref"
369
370
}
370
371
},
371
372
"acceptsInteractions": {
372
373
"type": "boolean"
373
374
}
374
375
}
375
376
},
376
377
"threadContext": {
377
378
"type": "object",
378
379
"properties": {
379
380
"rootAuthorLike": {
380
381
"type": "string",
381
382
"format": "at-uri"
382
383
}
383
384
},
384
385
"description": "Metadata about this post within the context of the thread it is in."
385
386
},
386
387
"threadViewPost": {
387
388
"type": "object",
388
389
"required": [
389
390
"post"
390
391
],
391
392
"properties": {
392
393
"post": {
393
394
"ref": "#postView",
394
395
"type": "ref"
395
396
},
396
397
"parent": {
397
398
"refs": [
398
399
"#threadViewPost",
399
400
"#notFoundPost",
400
401
"#blockedPost"
401
402
],
402
403
"type": "union"
403
404
},
404
405
"replies": {
405
406
"type": "array",
406
407
"items": {
407
408
"refs": [
408
409
"#threadViewPost",
409
410
"#notFoundPost",
410
411
"#blockedPost"
411
412
],
412
413
"type": "union"
413
414
}
414
415
},
415
416
"threadContext": {
416
417
"ref": "#threadContext",
417
418
"type": "ref"
418
419
}
419
420
}
420
421
},
421
422
"threadgateView": {
422
423
"type": "object",
423
424
"properties": {
424
425
"cid": {
425
426
"type": "string",
426
427
"format": "cid"
427
428
},
428
429
"uri": {
429
430
"type": "string",
430
431
"format": "at-uri"
431
432
},
432
433
"lists": {
433
434
"type": "array",
434
435
"items": {
435
436
"ref": "app.bsky.graph.defs#listViewBasic",
436
437
"type": "ref"
437
438
}
438
439
},
439
440
"record": {
440
441
"type": "unknown"
441
442
}
442
443
}
443
444
},
444
445
"interactionLike": {
445
446
"type": "token",
446
447
"description": "User liked the feed item"
447
448
},
448
449
"interactionSeen": {
449
450
"type": "token",
450
451
"description": "Feed item was seen by user"
451
452
},
452
453
"clickthroughItem": {
453
454
"type": "token",
454
455
"description": "User clicked through to the feed item"
455
456
},
456
457
"contentModeVideo": {
457
458
"type": "token",
458
459
"description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
459
460
},
460
461
"interactionQuote": {
461
462
"type": "token",
462
463
"description": "User quoted the feed item"
463
464
},
464
465
"interactionReply": {
465
466
"type": "token",
466
467
"description": "User replied to the feed item"
467
468
},
468
469
"interactionShare": {
469
470
"type": "token",
470
471
"description": "User shared the feed item"
471
472
},
472
473
"skeletonFeedPost": {
473
474
"type": "object",
474
475
"required": [
475
476
"post"
476
477
],
477
478
"properties": {
478
479
"post": {
479
480
"type": "string",
480
481
"format": "at-uri"
481
482
},
482
483
"reason": {
483
484
"refs": [
484
485
"#skeletonReasonRepost",
485
486
"#skeletonReasonPin"
486
487
],
487
488
"type": "union"
488
489
},
489
490
"feedContext": {
490
491
"type": "string",
491
492
"maxLength": 2000,
492
493
"description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions."
493
494
}
494
495
}
495
496
},
496
497
"clickthroughEmbed": {
497
498
"type": "token",
498
499
"description": "User clicked through to the embedded content of the feed item"
499
500
},
500
501
"interactionRepost": {
501
502
"type": "token",
502
503
"description": "User reposted the feed item"
503
504
},
504
505
"skeletonReasonPin": {
505
506
"type": "object",
506
507
"properties": {}
507
508
},
508
509
"clickthroughAuthor": {
509
510
"type": "token",
510
511
"description": "User clicked through to the author of the feed item"
511
512
},
512
513
"clickthroughReposter": {
513
514
"type": "token",
514
515
"description": "User clicked through to the reposter of the feed item"
515
516
},
516
517
"generatorViewerState": {
517
518
"type": "object",
518
519
"properties": {
519
520
"like": {
520
521
"type": "string",
521
522
"format": "at-uri"
522
523
}
523
524
}
524
525
},
525
526
"skeletonReasonRepost": {
526
527
"type": "object",
527
528
"required": [
528
529
"repost"
529
530
],
530
531
"properties": {
531
532
"repost": {
532
533
"type": "string",
533
534
"format": "at-uri"
534
535
}
535
536
}
536
537
},
537
538
"contentModeUnspecified": {
538
539
"type": "token",
539
540
"description": "Declares the feed generator returns any types of posts."
540
541
}
541
542
},
542
543
"$type": "com.atproto.lexicon.schema",
543
544
"lexicon": 1
544
545
}