ai.newnal.trustsquare.defs
Schema Diff
+4 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "ai.newnal.trustsquare.defs#videoMeta.channelHandle" }
- AddedEdge AddedEdge { src: "ai.newnal.trustsquare.defs#videoMeta", tgt: "ai.newnal.trustsquare.defs#videoMeta.channelHandle", kind: "prop", name: Some("channelHandle") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "ai.newnal.trustsquare.defs#videoMeta.channelHandle" }
Additional Notes
- Non-breaking: AddedEdge { src: "ai.newnal.trustsquare.defs#videoMeta", tgt: "ai.newnal.trustsquare.defs#videoMeta.channelHandle", kind: "prop", name: Some("channelHandle") }
1
1
{
2
2
"id": "ai.newnal.trustsquare.defs",
3
3
"defs": {
4
4
"replyRef": {
5
5
"type": "object",
6
6
"required": [
7
7
"root",
8
8
"parent"
9
9
],
10
10
"properties": {
11
11
"root": {
12
12
"ref": "com.atproto.repo.strongRef",
13
13
"type": "ref"
14
14
},
15
15
"parent": {
16
16
"ref": "com.atproto.repo.strongRef",
17
17
"type": "ref"
18
18
}
19
19
}
20
20
},
21
21
"actorView": {
22
22
"type": "object",
23
23
"required": [
24
24
"did",
25
25
"handle",
26
26
"displayName",
27
27
"verificationStatus"
28
28
],
29
29
"properties": {
30
30
"did": {
31
31
"type": "string",
32
32
"format": "did"
33
33
},
34
34
"avatar": {
35
35
"type": "string",
36
36
"format": "uri"
37
37
},
38
38
"gender": {
39
39
"type": "string"
40
40
},
41
41
"handle": {
42
42
"type": "string",
43
43
"format": "handle"
44
44
},
45
45
"ageBand": {
46
46
"type": "string"
47
47
},
48
48
"realName": {
49
49
"type": "boolean"
50
50
},
51
51
"occupation": {
52
52
"type": "string"
53
53
},
54
54
"affiliation": {
55
55
"type": "string"
56
56
},
57
57
"displayName": {
58
58
"type": "string"
59
59
},
60
60
"verificationStatus": {
61
61
"type": "string",
62
62
"knownValues": [
63
63
"active",
64
64
"expired",
65
65
"revoked",
66
66
"invalid",
67
67
"none"
68
68
]
69
69
}
70
70
}
71
71
},
72
72
"proofView": {
73
73
"type": "object",
74
74
"required": [
75
75
"uri",
76
76
"did",
77
77
"pdsEndpoint",
78
78
"signingKey",
79
79
"checks",
80
80
"checkedAt"
81
81
],
82
82
"properties": {
83
83
"cid": {
84
84
"type": "string",
85
85
"format": "cid",
86
86
"description": "Record CID from the PDS proof; absent when the record no longer exists."
87
87
},
88
88
"did": {
89
89
"type": "string",
90
90
"format": "did"
91
91
},
92
92
"uri": {
93
93
"type": "string",
94
94
"format": "at-uri"
95
95
},
96
96
"error": {
97
97
"type": "string"
98
98
},
99
99
"checks": {
100
100
"ref": "#proofChecks",
101
101
"type": "ref"
102
102
},
103
103
"commit": {
104
104
"ref": "#commitView",
105
105
"type": "ref"
106
106
},
107
107
"record": {
108
108
"type": "unknown"
109
109
},
110
110
"checkedAt": {
111
111
"type": "string",
112
112
"format": "datetime"
113
113
},
114
114
"indexedCid": {
115
115
"type": "string",
116
116
"format": "cid"
117
117
},
118
118
"signingKey": {
119
119
"type": "string",
120
120
"description": "did:key of the repository signing key from the DID document."
121
121
},
122
122
"pdsEndpoint": {
123
123
"type": "string",
124
124
"format": "uri"
125
125
}
126
126
}
127
127
},
128
128
"syncState": {
129
129
"type": "string",
130
130
"description": "AppView knowledge about a record: written to PDS but not yet seen on the network, or confirmed from the firehose.",
131
131
"knownValues": [
132
132
"optimistic",
133
133
"confirmed"
134
134
]
135
135
},
136
136
"videoMeta": {
137
137
"type": "object",
138
138
"required": [
139
139
"videoId",
140
140
"url"
141
141
],
142
142
"properties": {
143
143
"url": {
144
144
"type": "string",
145
145
"format": "uri"
146
146
},
147
147
"title": {
148
148
"type": "string"
149
149
},
150
150
"videoId": {
151
151
"type": "string"
152
152
},
153
153
"channelId": {
154
154
"type": "string"
155
155
},
156
156
"channelTitle": {
157
157
"type": "string"
158
158
},
159
159
"thumbnailUrl": {
160
160
"type": "string",
161
161
"format": "uri"
162
+
},
163
+
"channelHandle": {
164
+
"type": "string",
165
+
"description": "The channel's YouTube handle including its leading @, when the channel has one."
162
166
}
163
167
}
164
168
},
165
169
"actorStats": {
166
170
"type": "object",
167
171
"required": [
168
172
"comments",
169
173
"chatMessages",
170
174
"squaresCreated",
171
175
"likesReceived"
172
176
],
173
177
"properties": {
174
178
"comments": {
175
179
"type": "integer"
176
180
},
177
181
"firstSeenAt": {
178
182
"type": "string",
179
183
"format": "datetime"
180
184
},
181
185
"chatMessages": {
182
186
"type": "integer"
183
187
},
184
188
"likesReceived": {
185
189
"type": "integer"
186
190
},
187
191
"squaresCreated": {
188
192
"type": "integer"
189
193
}
190
194
}
191
195
},
192
196
"commitView": {
193
197
"type": "object",
194
198
"required": [
195
199
"cid",
196
200
"rev",
197
201
"sig",
198
202
"data"
199
203
],
200
204
"properties": {
201
205
"cid": {
202
206
"type": "string",
203
207
"format": "cid"
204
208
},
205
209
"rev": {
206
210
"type": "string",
207
211
"format": "tid"
208
212
},
209
213
"sig": {
210
214
"type": "string",
211
215
"description": "Base64 signature bytes."
212
216
},
213
217
"data": {
214
218
"type": "string",
215
219
"format": "cid",
216
220
"description": "MST root CID."
217
221
}
218
222
}
219
223
},
220
224
"disclosure": {
221
225
"type": "object",
222
226
"required": [
223
227
"displayName",
224
228
"realName"
225
229
],
226
230
"properties": {
227
231
"gender": {
228
232
"type": "string",
229
233
"description": "Attested: as supplied by the identity provider.",
230
234
"knownValues": [
231
235
"male",
232
236
"female",
233
237
"other"
234
238
]
235
239
},
236
240
"ageBand": {
237
241
"type": "string",
238
242
"description": "Attested: derived from the verified birth date.",
239
243
"knownValues": [
240
244
"teens",
241
245
"20s",
242
246
"30s",
243
247
"40s",
244
248
"50s",
245
249
"60s",
246
250
"70plus"
247
251
]
248
252
},
249
253
"realName": {
250
254
"type": "boolean",
251
255
"description": "Whether `displayName` is the full verified name."
252
256
},
253
257
"occupation": {
254
258
"type": "string",
255
259
"maxLength": 1000,
256
260
"description": "Self-declared.",
257
261
"maxGraphemes": 100
258
262
},
259
263
"affiliation": {
260
264
"type": "string",
261
265
"maxLength": 1000,
262
266
"description": "Self-declared.",
263
267
"maxGraphemes": 100
264
268
},
265
269
"displayName": {
266
270
"type": "string",
267
271
"maxLength": 640,
268
272
"description": "The verified name when `realName` is true, otherwise its masked form.",
269
273
"maxGraphemes": 64
270
274
}
271
275
},
272
276
"description": "What the account holder chose to reveal, signed by the verifier. `ageBand` and `gender` are derived from the verified identity and are therefore attested; `occupation` and `affiliation` are self-declared. With nothing disclosed, `displayName` is the masked form of the verified name."
273
277
},
274
278
"liveStatus": {
275
279
"type": "object",
276
280
"required": [
277
281
"state"
278
282
],
279
283
"properties": {
280
284
"state": {
281
285
"type": "string",
282
286
"knownValues": [
283
287
"none",
284
288
"upcoming",
285
289
"live",
286
290
"ended"
287
291
]
288
292
},
289
293
"endedAt": {
290
294
"type": "string",
291
295
"format": "datetime"
292
296
},
293
297
"startedAt": {
294
298
"type": "string",
295
299
"format": "datetime"
296
300
}
297
301
}
298
302
},
299
303
"squareView": {
300
304
"type": "object",
301
305
"required": [
302
306
"uri",
303
307
"cid",
304
308
"id",
305
309
"creator",
306
310
"subject",
307
311
"mode",
308
312
"settings",
309
313
"pinned",
310
314
"stats",
311
315
"liveStatus",
312
316
"createdAt",
313
317
"indexedAt",
314
318
"syncState"
315
319
],
316
320
"properties": {
317
321
"id": {
318
322
"type": "string",
319
323
"description": "Short public id used in /s/{id} links."
320
324
},
321
325
"cid": {
322
326
"type": "string",
323
327
"format": "cid"
324
328
},
325
329
"uri": {
326
330
"type": "string",
327
331
"format": "at-uri"
328
332
},
329
333
"mode": {
330
334
"type": "string",
331
335
"knownValues": [
332
336
"vod",
333
337
"live"
334
338
]
335
339
},
336
340
"stats": {
337
341
"ref": "#squareStats",
338
342
"type": "ref"
339
343
},
340
344
"title": {
341
345
"type": "string"
342
346
},
343
347
"pinned": {
344
348
"type": "array",
345
349
"items": {
346
350
"ref": "com.atproto.repo.strongRef",
347
351
"type": "ref"
348
352
}
349
353
},
350
354
"creator": {
351
355
"ref": "#actorView",
352
356
"type": "ref"
353
357
},
354
358
"subject": {
355
359
"ref": "#videoMeta",
356
360
"type": "ref"
357
361
},
358
362
"settings": {
359
363
"ref": "#squareSettings",
360
364
"type": "ref"
361
365
},
362
366
"createdAt": {
363
367
"type": "string",
364
368
"format": "datetime"
365
369
},
366
370
"indexedAt": {
367
371
"type": "string",
368
372
"format": "datetime"
369
373
},
370
374
"syncState": {
371
375
"ref": "#syncState",
372
376
"type": "ref"
373
377
},
374
378
"liveStatus": {
375
379
"ref": "#liveStatus",
376
380
"type": "ref"
377
381
},
378
382
"description": {
379
383
"type": "string"
380
384
}
381
385
}
382
386
},
383
387
"threadView": {
384
388
"type": "object",
385
389
"required": [
386
390
"comment",
387
391
"replies",
388
392
"hasMoreReplies"
389
393
],
390
394
"properties": {
391
395
"comment": {
392
396
"ref": "#commentView",
393
397
"type": "ref"
394
398
},
395
399
"replies": {
396
400
"type": "array",
397
401
"items": {
398
402
"ref": "#commentView",
399
403
"type": "ref"
400
404
}
401
405
},
402
406
"hasMoreReplies": {
403
407
"type": "boolean"
404
408
}
405
409
}
406
410
},
407
411
"commentView": {
408
412
"type": "object",
409
413
"required": [
410
414
"uri",
411
415
"cid",
412
416
"author",
413
417
"squareUri",
414
418
"text",
415
419
"likeCount",
416
420
"dislikeCount",
417
421
"replyCount",
418
422
"edited",
419
423
"hidden",
420
424
"pinned",
421
425
"deleted",
422
426
"createdAt",
423
427
"indexedAt",
424
428
"syncState"
425
429
],
426
430
"properties": {
427
431
"cid": {
428
432
"type": "string",
429
433
"format": "cid"
430
434
},
431
435
"uri": {
432
436
"type": "string",
433
437
"format": "at-uri"
434
438
},
435
439
"text": {
436
440
"type": "string"
437
441
},
438
442
"reply": {
439
443
"ref": "#replyRef",
440
444
"type": "ref"
441
445
},
442
446
"author": {
443
447
"ref": "#actorView",
444
448
"type": "ref"
445
449
},
446
450
"edited": {
447
451
"type": "boolean"
448
452
},
449
453
"hidden": {
450
454
"type": "boolean",
451
455
"description": "Hidden by the Square creator or an operator. Only returned to the creator or the author."
452
456
},
453
457
"pinned": {
454
458
"type": "boolean"
455
459
},
456
460
"viewer": {
457
461
"ref": "#viewerState",
458
462
"type": "ref"
459
463
},
460
464
"deleted": {
461
465
"type": "boolean",
462
466
"description": "Tombstone for a comment the author deleted; text is empty."
463
467
},
464
468
"editedAt": {
465
469
"type": "string",
466
470
"format": "datetime"
467
471
},
468
472
"createdAt": {
469
473
"type": "string",
470
474
"format": "datetime"
471
475
},
472
476
"indexedAt": {
473
477
"type": "string",
474
478
"format": "datetime"
475
479
},
476
480
"likeCount": {
477
481
"type": "integer"
478
482
},
479
483
"squareUri": {
480
484
"type": "string",
481
485
"format": "at-uri"
482
486
},
483
487
"syncState": {
484
488
"ref": "#syncState",
485
489
"type": "ref"
486
490
},
487
491
"replyCount": {
488
492
"type": "integer"
489
493
},
490
494
"trustScore": {
491
495
"type": "string",
492
496
"description": "Debug only; present when the AppView runs with ranking debug enabled."
493
497
},
494
498
"dislikeCount": {
495
499
"type": "integer"
496
500
}
497
501
}
498
502
},
499
503
"historyItem": {
500
504
"type": "object",
501
505
"required": [
502
506
"kind",
503
507
"square"
504
508
],
505
509
"properties": {
506
510
"kind": {
507
511
"type": "string",
508
512
"knownValues": [
509
513
"comment",
510
514
"chat"
511
515
]
512
516
},
513
517
"square": {
514
518
"ref": "#squareView",
515
519
"type": "ref"
516
520
},
517
521
"comment": {
518
522
"ref": "#commentView",
519
523
"type": "ref"
520
524
},
521
525
"chatMessage": {
522
526
"ref": "#chatMessageView",
523
527
"type": "ref"
524
528
}
525
529
}
526
530
},
527
531
"proofChecks": {
528
532
"type": "object",
529
533
"required": [
530
534
"signatureValid",
531
535
"inclusionValid",
532
536
"cidMatchesIndex",
533
537
"didDocFresh"
534
538
],
535
539
"properties": {
536
540
"didDocFresh": {
537
541
"type": "boolean"
538
542
},
539
543
"inclusionValid": {
540
544
"type": "boolean"
541
545
},
542
546
"signatureValid": {
543
547
"type": "boolean"
544
548
},
545
549
"cidMatchesIndex": {
546
550
"type": "boolean"
547
551
}
548
552
}
549
553
},
550
554
"squareStats": {
551
555
"type": "object",
552
556
"required": [
553
557
"comments",
554
558
"chatMessages",
555
559
"participants"
556
560
],
557
561
"properties": {
558
562
"comments": {
559
563
"type": "integer"
560
564
},
561
565
"chatMessages": {
562
566
"type": "integer"
563
567
},
564
568
"participants": {
565
569
"type": "integer"
566
570
}
567
571
}
568
572
},
569
573
"viewerState": {
570
574
"type": "object",
571
575
"properties": {
572
576
"reaction": {
573
577
"type": "string",
574
578
"knownValues": [
575
579
"like",
576
580
"dislike"
577
581
]
578
582
},
579
583
"reactionUri": {
580
584
"type": "string",
581
585
"format": "at-uri"
582
586
}
583
587
}
584
588
},
585
589
"youtubeVideo": {
586
590
"type": "object",
587
591
"required": [
588
592
"videoId",
589
593
"url"
590
594
],
591
595
"properties": {
592
596
"url": {
593
597
"type": "string",
594
598
"format": "uri",
595
599
"description": "Canonical https://www.youtube.com/watch?v=... URL."
596
600
},
597
601
"videoId": {
598
602
"type": "string",
599
603
"maxLength": 16,
600
604
"minLength": 11,
601
605
"description": "YouTube video id."
602
606
},
603
607
"channelId": {
604
608
"type": "string",
605
609
"maxLength": 64
606
610
}
607
611
},
608
612
"description": "A YouTube video or live stream that a Square is attached to."
609
613
},
610
614
"squareSettings": {
611
615
"type": "object",
612
616
"properties": {
613
617
"allowChat": {
614
618
"type": "boolean",
615
619
"default": true
616
620
},
617
621
"allowComments": {
618
622
"type": "boolean",
619
623
"default": true
620
624
},
621
625
"requireRealName": {
622
626
"type": "boolean",
623
627
"default": false,
624
628
"description": "When true, only accounts disclosing their full verified name may write in this Square."
625
629
},
626
630
"slowModeSeconds": {
627
631
"type": "integer",
628
632
"default": 3,
629
633
"maximum": 600,
630
634
"minimum": 0
631
635
}
632
636
}
633
637
},
634
638
"chatMessageView": {
635
639
"type": "object",
636
640
"required": [
637
641
"uri",
638
642
"cid",
639
643
"author",
640
644
"squareUri",
641
645
"text",
642
646
"hidden",
643
647
"createdAt",
644
648
"indexedAt",
645
649
"syncState"
646
650
],
647
651
"properties": {
648
652
"cid": {
649
653
"type": "string",
650
654
"format": "cid"
651
655
},
652
656
"uri": {
653
657
"type": "string",
654
658
"format": "at-uri"
655
659
},
656
660
"text": {
657
661
"type": "string"
658
662
},
659
663
"author": {
660
664
"ref": "#actorView",
661
665
"type": "ref"
662
666
},
663
667
"hidden": {
664
668
"type": "boolean"
665
669
},
666
670
"createdAt": {
667
671
"type": "string",
668
672
"format": "datetime"
669
673
},
670
674
"indexedAt": {
671
675
"type": "string",
672
676
"format": "datetime"
673
677
},
674
678
"squareUri": {
675
679
"type": "string",
676
680
"format": "at-uri"
677
681
},
678
682
"syncState": {
679
683
"ref": "#syncState",
680
684
"type": "ref"
681
685
}
682
686
}
683
687
},
684
688
"actorProfileView": {
685
689
"type": "object",
686
690
"required": [
687
691
"actor",
688
692
"verification",
689
693
"stats",
690
694
"historyVisible"
691
695
],
692
696
"properties": {
693
697
"actor": {
694
698
"ref": "#actorView",
695
699
"type": "ref"
696
700
},
697
701
"stats": {
698
702
"ref": "#actorStats",
699
703
"type": "ref"
700
704
},
701
705
"pdsEndpoint": {
702
706
"type": "string",
703
707
"format": "uri"
704
708
},
705
709
"verification": {
706
710
"ref": "#verificationView",
707
711
"type": "ref"
708
712
},
709
713
"historyVisible": {
710
714
"type": "boolean"
711
715
}
712
716
}
713
717
},
714
718
"verificationView": {
715
719
"type": "object",
716
720
"required": [
717
721
"status"
718
722
],
719
723
"properties": {
720
724
"cid": {
721
725
"type": "string",
722
726
"format": "cid"
723
727
},
724
728
"uri": {
725
729
"type": "string",
726
730
"format": "at-uri"
727
731
},
728
732
"issuer": {
729
733
"type": "string",
730
734
"format": "did"
731
735
},
732
736
"status": {
733
737
"type": "string",
734
738
"knownValues": [
735
739
"active",
736
740
"expired",
737
741
"revoked",
738
742
"invalid",
739
743
"none"
740
744
]
741
745
},
742
746
"provider": {
743
747
"type": "string"
744
748
},
745
749
"expiresAt": {
746
750
"type": "string",
747
751
"format": "datetime"
748
752
},
749
753
"disclosure": {
750
754
"ref": "#disclosure",
751
755
"type": "ref"
752
756
},
753
757
"verifiedAt": {
754
758
"type": "string",
755
759
"format": "datetime"
756
760
},
757
761
"verificationId": {
758
762
"type": "string"
759
763
},
760
764
"attestationValid": {
761
765
"type": "boolean"
762
766
}
763
767
}
764
768
},
765
769
"socialAccountView": {
766
770
"type": "object",
767
771
"required": [
768
772
"platform",
769
773
"handle",
770
774
"method",
771
775
"verifiedAt"
772
776
],
773
777
"properties": {
774
778
"handle": {
775
779
"type": "string"
776
780
},
777
781
"method": {
778
782
"type": "string",
779
783
"knownValues": [
780
784
"mock",
781
785
"oauth",
782
786
"post-proof"
783
787
]
784
788
},
785
789
"platform": {
786
790
"type": "string",
787
791
"knownValues": [
788
792
"youtube",
789
793
"facebook",
790
794
"x",
791
795
"naver"
792
796
]
793
797
},
794
798
"profileUrl": {
795
799
"type": "string",
796
800
"format": "uri"
797
801
},
798
802
"verifiedAt": {
799
803
"type": "string",
800
804
"format": "datetime"
801
805
}
802
806
},
803
807
"description": "A social account an actor has linked. `method` is carried through so a reader can tell a mocked claim from an ownership-checked one."
804
808
}
805
809
},
806
810
"$type": "com.atproto.lexicon.schema",
807
811
"lexicon": 1
808
812
}