dev.knotless.defs
Schema Diff
+12 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 7 non-breaking changes.
Non-Breaking Changes (7)
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.draft" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "dev.knotless.defs#itemView.draft" }AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"actorView": {
5
5
"description": "An account, as an appview shows it beside what it did.",
6
6
"properties": {
7
7
"avatar": {
8
8
"description": "The account's picture, as in dev.knotless.getProfile#profileView.",
9
9
"format": "uri",
10
10
"type": "string"
11
11
},
12
12
"did": {
13
13
"format": "did",
14
14
"type": "string"
15
15
},
16
16
"handle": {
17
17
"description": "The handle the account claims, when it resolves back to it; else the DID.",
18
18
"type": "string"
19
19
}
20
20
},
21
21
"required": [
22
22
"did",
23
23
"handle"
24
24
],
25
25
"type": "object"
26
26
},
27
27
"actorViewerState": {
28
28
"description": "What the account asking a query has to do with an account.",
29
29
"properties": {
30
30
"blocking": {
31
31
"description": "Its dev.knotless.block record keeping the account out of all its repositories, if it has one.",
32
32
"format": "at-uri",
33
33
"type": "string"
34
34
},
35
35
"following": {
36
36
"description": "Its dev.knotless.follow record naming the account, if it follows it.",
37
37
"format": "at-uri",
38
38
"type": "string"
39
39
}
40
40
},
41
41
"type": "object"
42
42
},
43
43
"byteSlice": {
44
44
"description": "A span of a text, by its UTF-8 bytes, counted from zero: the start inclusive, the end exclusive.",
45
45
"properties": {
46
46
"byteEnd": {
47
47
"minimum": 0,
48
48
"type": "integer"
49
49
},
50
50
"byteStart": {
51
51
"minimum": 0,
52
52
"type": "integer"
53
53
}
54
54
},
55
55
"required": [
56
56
"byteStart",
57
57
"byteEnd"
58
58
],
59
59
"type": "object"
60
60
},
61
61
"changesView": {
62
62
"description": "What a pull brings in: for a merged one, what its merge brought into the base; otherwise what its branch has since it left the base.",
63
63
"properties": {
64
64
"commits": {
65
65
"description": "Oldest first.",
66
66
"items": {
67
67
"ref": "#commitView",
68
68
"type": "ref"
69
69
},
70
70
"type": "array"
71
71
},
72
72
"files": {
73
73
"items": {
74
74
"ref": "#fileDiffView",
75
75
"type": "ref"
76
76
},
77
77
"type": "array"
78
78
},
79
79
"head": {
80
80
"description": "For an open pull, the hex object ID of the commit its branch is at: what its checks and reviews are of.",
81
81
"type": "string"
82
82
},
83
83
"repo": {
84
84
"description": "The repository whose commit pages show its commits.",
85
85
"ref": "#repoViewBasic",
86
86
"type": "ref"
87
87
}
88
88
},
89
89
"required": [
90
90
"repo",
91
91
"commits",
92
92
"files"
93
93
],
94
94
"type": "object"
95
95
},
96
96
"checkImageView": {
97
97
"description": "A picture a check made: screenshots of the pages a change moved, say.",
98
98
"properties": {
99
99
"alt": {
100
100
"description": "What it shows.",
101
101
"type": "string"
102
102
},
103
103
"url": {
104
104
"description": "Where this appview serves it, as a path.",
105
105
"type": "string"
106
106
}
107
107
},
108
108
"required": [
109
109
"alt",
110
110
"url"
111
111
],
112
112
"type": "object"
113
113
},
114
114
"checkView": {
115
115
"description": "The newest run of a workflow, as a runner the repository names in its record reported it.",
116
116
"properties": {
117
117
"commit": {
118
118
"description": "The commit it ran at, in hex.",
119
119
"type": "string"
120
120
},
121
121
"error": {
122
122
"description": "Why it could not run.",
123
123
"type": "string"
124
124
},
125
125
"finishedAt": {
126
126
"format": "datetime",
127
127
"type": "string"
128
128
},
129
129
"images": {
130
130
"description": "The pictures it made to be looked at, in order.",
131
131
"items": {
132
132
"ref": "#checkImageView",
133
133
"type": "ref"
134
134
},
135
135
"type": "array"
136
136
},
137
137
"repo": {
138
138
"description": "The repository it is of, whose pages show it.",
139
139
"ref": "#repoViewBasic",
140
140
"type": "ref"
141
141
},
142
142
"skipped": {
143
143
"description": "For a `success` that ran nothing, as the change touched none of the paths its workflow names: why.",
144
144
"type": "string"
145
145
},
146
146
"startedAt": {
147
147
"format": "datetime",
148
148
"type": "string"
149
149
},
150
150
"status": {
151
151
"description": "`queued` is a run filed and waiting for a job on its runner, no step started yet.",
152
152
"knownValues": [
153
153
"queued",
154
154
"running",
155
155
"success",
156
156
"failure",
157
157
"error",
158
158
"cancelled"
159
159
],
160
160
"type": "string"
161
161
},
162
162
"uri": {
163
163
"description": "Its dev.knotless.check record.",
164
164
"format": "at-uri",
165
165
"type": "string"
166
166
},
167
167
"workflow": {
168
168
"type": "string"
169
169
}
170
170
},
171
171
"required": [
172
172
"uri",
173
173
"repo",
174
174
"workflow",
175
175
"status",
176
176
"commit",
177
177
"startedAt",
178
178
"images"
179
179
],
180
180
"type": "object"
181
181
},
182
182
"commentView": {
183
183
"description": "Something said on a pull or an issue.",
184
184
"properties": {
185
185
"author": {
186
186
"ref": "#actorView",
187
187
"type": "ref"
188
188
},
189
189
"body": {
190
190
"description": "What it says, as its author wrote it, in Markdown.",
191
191
"type": "string"
192
192
},
193
193
"commit": {
194
194
"description": "For a review of a pull, the hex object ID of the head it looked at.",
195
195
"type": "string"
196
196
},
197
197
"createdAt": {
198
198
"format": "datetime",
199
199
"type": "string"
200
200
},
201
201
"html": {
202
202
"description": "What it says, its Markdown made into HTML: raw HTML shown as text, and links made relative to the repository.",
203
203
"type": "string"
204
204
},
205
205
"reactions": {
206
206
"description": "How accounts reacted to it, by content, in the order dev.knotless.defs#reactionContent lists them. Absent when none did.",
207
207
"items": {
208
208
"ref": "#reactionCountView",
209
209
"type": "ref"
210
210
},
211
211
"type": "array"
212
212
},
213
213
"updatedAt": {
214
214
"description": "When its author last changed it, if they have.",
215
215
"format": "datetime",
216
216
"type": "string"
217
217
},
218
218
"uri": {
219
219
"description": "Its dev.knotless.comment record.",
220
220
"format": "at-uri",
221
221
"type": "string"
222
222
},
223
223
"verdict": {
224
224
"description": "For a review, what it found.",
225
225
"knownValues": [
226
226
"approve",
227
227
"changes"
228
228
],
229
229
"type": "string"
230
230
}
231
231
},
232
232
"required": [
233
233
"author",
234
234
"createdAt",
235
235
"html"
236
236
],
237
237
"type": "object"
238
238
},
239
239
"commitAuthorView": {
240
240
"description": "Who wrote a commit or helped to: by the name git gives, and by account when that is one of the repository's people whose address it is.",
241
241
"properties": {
242
242
"actor": {
243
243
"ref": "#actorView",
244
244
"type": "ref"
245
245
},
246
246
"agent": {
247
247
"description": "The coding agent whose address it is, when it is one the pages know the face of.",
248
248
"knownValues": [
249
249
"claude"
250
250
],
251
251
"type": "string"
252
252
},
253
253
"name": {
254
254
"description": "The name git records.",
255
255
"type": "string"
256
256
}
257
257
},
258
258
"required": [
259
259
"name"
260
260
],
261
261
"type": "object"
262
262
},
263
263
"commitRefView": {
264
264
"description": "A commit, by its object name.",
265
265
"properties": {
266
266
"sha": {
267
267
"description": "In hex.",
268
268
"type": "string"
269
269
}
270
270
},
271
271
"required": [
272
272
"sha"
273
273
],
274
274
"type": "object"
275
275
},
276
276
"commitView": {
277
277
"description": "A commit, with the accounts that wrote it where the repository's pages believe their claims (dev.knotless.emails).",
278
278
"properties": {
279
279
"author": {
280
280
"ref": "#commitAuthorView",
281
281
"type": "ref"
282
282
},
283
283
"coauthors": {
284
284
"description": "Who its message's `Co-authored-by` trailers name.",
285
285
"items": {
286
286
"ref": "#commitAuthorView",
287
287
"type": "ref"
288
288
},
289
289
"type": "array"
290
290
},
291
291
"committedAt": {
292
292
"description": "When it was committed: what history runs in, as its author's date need not.",
293
293
"format": "datetime",
294
294
"type": "string"
295
295
},
296
296
"committer": {
297
297
"description": "Who committed it, when someone other than its author did.",
298
298
"ref": "#commitAuthorView",
299
299
"type": "ref"
300
300
},
301
301
"date": {
302
302
"description": "When its author made it, which a rebase or a squash keeps.",
303
303
"format": "datetime",
304
304
"type": "string"
305
305
},
306
306
"message": {
307
307
"description": "Its message, less the last line naming the pull it merged, if it did.",
308
308
"type": "string"
309
309
},
310
310
"parents": {
311
311
"items": {
312
312
"ref": "#commitRefView",
313
313
"type": "ref"
314
314
},
315
315
"type": "array"
316
316
},
317
317
"pull": {
318
318
"description": "The pull its message's last line names, as a squash merge records it, when that is a pull on this repository.",
319
319
"ref": "#itemViewBasic",
320
320
"type": "ref"
321
321
},
322
322
"sha": {
323
323
"description": "Its object name, in hex.",
324
324
"type": "string"
325
325
}
326
326
},
327
327
"required": [
328
328
"sha",
329
329
"parents",
330
330
"author",
331
331
"coauthors",
332
332
"date",
333
333
"message"
334
334
],
335
335
"type": "object"
336
336
},
337
337
"diffRowView": {
338
338
"description": "One row of a file's diff: a hunk header, a note, or a line with its old and new numbers.",
339
339
"properties": {
340
340
"kind": {
341
341
"description": "`h` for a hunk header, `x` for a note, `a` for a line added, `d` for one removed, or empty for context.",
342
342
"type": "string"
343
343
},
344
344
"line": {
345
345
"description": "Whether it is a line of the file.",
346
346
"type": "boolean"
347
347
},
348
348
"new": {
349
349
"description": "Its number after.",
350
350
"minimum": 0,
351
351
"type": "integer"
352
352
},
353
353
"old": {
354
354
"description": "Its number before.",
355
355
"minimum": 0,
356
356
"type": "integer"
357
357
},
358
358
"text": {
359
359
"type": "string"
360
360
}
361
361
},
362
362
"required": [
363
363
"kind",
364
364
"line",
365
365
"text"
366
366
],
367
367
"type": "object"
368
368
},
369
369
"facet": {
370
370
"description": "Where a text says more than its words, shaped as app.bsky.richtext.facet: the span it covers and what that span is. A pull's, an issue's or a comment's body has its own, and a pull's or an issue's title its own.",
371
371
"properties": {
372
372
"features": {
373
373
"description": "What the span is. Kinds unknown to a reader are passed over.",
374
374
"items": {
375
375
"refs": [
376
376
"#mention"
377
377
],
378
378
"type": "union"
379
379
},
380
380
"maxLength": 8,
381
381
"type": "array"
382
382
},
383
383
"index": {
384
384
"ref": "#byteSlice",
385
385
"type": "ref"
386
386
}
387
387
},
388
388
"required": [
389
389
"index",
390
390
"features"
391
391
],
392
392
"type": "object"
393
393
},
394
394
"fileDiffView": {
395
395
"description": "One file of a diff, or why its rows are not shown.",
396
396
"properties": {
397
397
"added": {
398
398
"description": "Lines added.",
399
399
"minimum": 0,
400
400
"type": "integer"
401
401
},
402
402
"hunkCount": {
403
403
"description": "Of those rows, how many are hunk headers, which a page may draw taller than a line.",
404
404
"minimum": 0,
405
405
"type": "integer"
406
406
},
407
407
"new": {
408
408
"description": "Its path after.",
409
409
"type": "string"
410
410
},
411
411
"note": {
412
412
"description": "Why its rows are not shown, when they are not.",
413
413
"type": "string"
414
414
},
415
415
"old": {
416
416
"description": "Its path before.",
417
417
"type": "string"
418
418
},
419
419
"ranges": {
420
420
"description": "The ranges its highlighting paints, encoded as the pages read them.",
421
421
"type": "string"
422
422
},
423
423
"removed": {
424
424
"description": "Lines removed.",
425
425
"minimum": 0,
426
426
"type": "integer"
427
427
},
428
428
"rowCount": {
429
429
"description": "Where its rows are left out but would be shown, as dev.knotless.getThread's filesOnly leaves them, how many there are: the room a page keeps for them until they come.",
430
430
"minimum": 0,
431
431
"type": "integer"
432
432
},
433
433
"rows": {
434
434
"items": {
435
435
"ref": "#diffRowView",
436
436
"type": "ref"
437
437
},
438
438
"type": "array"
439
439
},
440
440
"status": {
441
441
"knownValues": [
442
442
"added",
443
443
"deleted",
444
444
"renamed",
445
445
"modified"
446
446
],
447
447
"type": "string"
448
448
}
449
449
},
450
450
"required": [
451
451
"old",
452
452
"new",
453
453
"status",
454
454
"added",
455
455
"removed",
456
456
"rows"
457
457
],
458
458
"type": "object"
459
459
},
460
460
"followState": {
461
461
"description": "An account's followers, as following or unfollowing it leaves them.",
462
462
"properties": {
463
463
"followersCount": {
464
464
"description": "How many accounts follow it now.",
465
465
"minimum": 0,
466
466
"type": "integer"
467
467
},
468
468
"following": {
469
469
"description": "The asker's dev.knotless.follow record naming it; absent once unfollowed.",
470
470
"format": "at-uri",
471
471
"type": "string"
472
472
}
473
473
},
474
474
"required": [
475
475
"followersCount"
476
476
],
477
477
"type": "object"
478
478
},
479
479
"image": {
480
480
"description": "A picture a pull's, an issue's or a comment's body shows, attached so its author's PDS keeps it. The body links to it on that PDS, as `com.atproto.sync.getBlob` serves it, saying what it shows as Markdown's alt text; readers may show it from elsewhere, as dev.knotless.getAttachment does.",
481
481
"properties": {
482
482
"image": {
483
483
"accept": [
484
484
"image/png",
485
485
"image/jpeg",
486
486
"image/webp",
487
487
"image/gif"
488
488
],
489
489
"maxSize": 1000000,
490
490
"type": "blob"
491
491
}
492
492
},
493
493
"required": [
494
494
"image"
495
495
],
496
496
"type": "object"
497
497
},
498
498
"itemView": {
499
499
"description": "A pull or an issue in a list of them.",
500
500
"properties": {
501
501
"author": {
502
502
"description": "Who opened it.",
503
503
"ref": "#actorView",
504
504
"type": "ref"
505
505
},
506
506
"comments": {
507
507
"description": "How many comments are on it, its own body aside.",
508
508
"minimum": 0,
509
509
"type": "integer"
510
510
},
511
511
"createdAt": {
512
512
"format": "datetime",
513
513
"type": "string"
514
514
},
515
+
"draft": {
516
+
"description": "A pull its author has not marked ready to merge. Not, when absent.",
517
+
"type": "boolean"
518
+
},
515
519
"kind": {
516
520
"knownValues": [
517
521
"pull",
518
522
"issue"
519
523
],
520
524
"type": "string"
521
525
},
522
526
"labels": {
523
527
"description": "The labels it carries, as the repository defines them, in the order it does. Absent when it carries none.",
524
528
"items": {
525
529
"ref": "dev.knotless.repo#label",
526
530
"type": "ref"
527
531
},
528
532
"type": "array"
529
533
},
534
+
"reviewers": {
535
+
"description": "Those a pull's author asks to review it, in the order asked. Absent when it asks no one.",
536
+
"items": {
537
+
"ref": "#actorView",
538
+
"type": "ref"
539
+
},
540
+
"type": "array"
541
+
},
530
542
"state": {
531
543
"description": "A merged pull is merged; a closed one, or an issue, closed.",
532
544
"knownValues": [
533
545
"open",
534
546
"closed",
535
547
"merged"
536
548
],
537
549
"type": "string"
538
550
},
539
551
"title": {
540
552
"type": "string"
541
553
},
542
554
"updatedAt": {
543
555
"description": "When its author last changed its title or body, if they have.",
544
556
"format": "datetime",
545
557
"type": "string"
546
558
},
547
559
"uri": {
548
560
"description": "Its dev.knotless.pull or dev.knotless.issue record.",
549
561
"format": "at-uri",
550
562
"type": "string"
551
563
}
552
564
},
553
565
"required": [
554
566
"uri",
555
567
"kind",
556
568
"title",
557
569
"state",
558
570
"author",
559
571
"createdAt",
560
572
"comments"
561
573
],
562
574
"type": "object"
563
575
},
564
576
"itemViewBasic": {
565
577
"description": "A pull or an issue, by its record and its title.",
566
578
"properties": {
567
579
"title": {
568
580
"type": "string"
569
581
},
570
582
"uri": {
571
583
"description": "Its dev.knotless.pull or dev.knotless.issue record.",
572
584
"format": "at-uri",
573
585
"type": "string"
574
586
}
575
587
},
576
588
"required": [
577
589
"uri",
578
590
"title"
579
591
],
580
592
"type": "object"
581
593
},
582
594
"languageView": {
583
595
"description": "One language a repository is written in.",
584
596
"properties": {
585
597
"bytes": {
586
598
"minimum": 0,
587
599
"type": "integer"
588
600
},
589
601
"color": {
590
602
"description": "Its color, as linguist has it.",
591
603
"type": "string"
592
604
},
593
605
"name": {
594
606
"description": "Its name, or `Other` for the languages each under one percent.",
595
607
"type": "string"
596
608
},
597
609
"permille": {
598
610
"description": "Its share of all the bytes counted, in tenths of a percent.",
599
611
"maximum": 1000,
600
612
"minimum": 0,
601
613
"type": "integer"
602
614
}
603
615
},
604
616
"required": [
605
617
"name",
606
618
"color",
607
619
"bytes",
608
620
"permille"
609
621
],
610
622
"type": "object"
611
623
},
612
624
"link": {
613
625
"description": "A link shown on an account's profile or a repository's pages.",
614
626
"properties": {
615
627
"title": {
616
628
"description": "What to call it. Readers fall back to the address's host.",
617
629
"maxGraphemes": 40,
618
630
"maxLength": 320,
619
631
"type": "string"
620
632
},
621
633
"url": {
622
634
"description": "Where it goes: an http or https address.",
623
635
"format": "uri",
624
636
"type": "string"
625
637
}
626
638
},
627
639
"required": [
628
640
"url"
629
641
],
630
642
"type": "object"
631
643
},
632
644
"mention": {
633
645
"description": "An account the span, `@handle` in the text, mentions: kept by DID, so it names the account still after its handle changes. The account hears of it as a notification.",
634
646
"properties": {
635
647
"did": {
636
648
"format": "did",
637
649
"type": "string"
638
650
}
639
651
},
640
652
"required": [
641
653
"did"
642
654
],
643
655
"type": "object"
644
656
},
645
657
"minutesView": {
646
658
"description": "The minutes a runner the repository names counts for its owner's public repositories, from its dev.knotless.minutes record.",
647
659
"properties": {
648
660
"allowance": {
649
661
"description": "The minutes in 30 days it gives the owner's runs before they go one at a time. Absent when there is no limit.",
650
662
"minimum": 1,
651
663
"type": "integer"
652
664
},
653
665
"freeing": {
654
666
"description": "When minutes counted now stop counting, soonest first.",
655
667
"items": {
656
668
"ref": "dev.knotless.minutes#freeing",
657
669
"type": "ref"
658
670
},
659
671
"type": "array"
660
672
},
661
673
"minutes": {
662
674
"description": "The minutes steps took in the 30 days up to `updatedAt`.",
663
675
"minimum": 0,
664
676
"type": "integer"
665
677
},
666
678
"runner": {
667
679
"description": "The runner's account.",
668
680
"ref": "#actorView",
669
681
"type": "ref"
670
682
},
671
683
"updatedAt": {
672
684
"description": "When the runner last counted.",
673
685
"format": "datetime",
674
686
"type": "string"
675
687
}
676
688
},
677
689
"required": [
678
690
"runner",
679
691
"minutes",
680
692
"updatedAt"
681
693
],
682
694
"type": "object"
683
695
},
684
696
"packageView": {
685
697
"description": "One package a repository publishes.",
686
698
"properties": {
687
699
"image": {
688
700
"description": "True when its latest version, or its newest when none is latest, is a container image.",
689
701
"type": "boolean"
690
702
},
691
703
"latest": {
692
704
"description": "Its latest version: the highest with no pre-release part. Absent when it has only pre-releases.",
693
705
"type": "string"
694
706
},
695
707
"name": {
696
708
"description": "The package's name.",
697
709
"type": "string"
698
710
},
699
711
"releaseCount": {
700
712
"description": "How many versions of it are published.",
701
713
"minimum": 0,
702
714
"type": "integer"
703
715
}
704
716
},
705
717
"required": [
706
718
"name"
707
719
],
708
720
"type": "object"
709
721
},
710
722
"pullHeadView": {
711
723
"description": "What a pull brings in: a branch of a repository.",
712
724
"properties": {
713
725
"branch": {
714
726
"type": "string"
715
727
},
716
728
"repo": {
717
729
"description": "The repository the branch is on, if the index knows it.",
718
730
"ref": "#repoViewBasic",
719
731
"type": "ref"
720
732
}
721
733
},
722
734
"required": [
723
735
"branch"
724
736
],
725
737
"type": "object"
726
738
},
727
739
"queueStateView": {
728
740
"description": "Where an open pull stands in its target branch's merge queue.",
729
741
"properties": {
730
742
"checks": {
731
743
"description": "While its batch is being checked or landing, the batch's checks; once ejected by checks that failed, those.",
732
744
"items": {
733
745
"ref": "#checkView",
734
746
"type": "ref"
735
747
},
736
748
"type": "array"
737
749
},
738
750
"createdAt": {
739
751
"description": "When it was queued or ejected.",
740
752
"format": "datetime",
741
753
"type": "string"
742
754
},
743
755
"reason": {
744
756
"description": "Why it was ejected, as the runner said.",
745
757
"type": "string"
746
758
},
747
759
"said": {
748
760
"description": "Where it stands, in words: `Queued, 3rd of 5`, `In a batch of 4 being checked`, `Landing`, or why it was ejected.",
749
761
"type": "string"
750
762
},
751
763
"state": {
752
764
"knownValues": [
753
765
"queued",
754
766
"ejected"
755
767
],
756
768
"type": "string"
757
769
}
758
770
},
759
771
"required": [
760
772
"state",
761
773
"createdAt",
762
774
"said",
763
775
"checks"
764
776
],
765
777
"type": "object"
766
778
},
767
779
"reactionContent": {
768
780
"description": "What a reaction says, as GitHub's eight: a thumbs up, a thumbs down, a laugh, a party popper, a confused face, a heart, a rocket and eyes.",
769
781
"knownValues": [
770
782
"+1",
771
783
"-1",
772
784
"laugh",
773
785
"hooray",
774
786
"confused",
775
787
"heart",
776
788
"rocket",
777
789
"eyes"
778
790
],
779
791
"maxLength": 32,
780
792
"type": "string"
781
793
},
782
794
"reactionCountView": {
783
795
"description": "How many accounts reacted to something with one content.",
784
796
"properties": {
785
797
"content": {
786
798
"ref": "#reactionContent",
787
799
"type": "ref"
788
800
},
789
801
"count": {
790
802
"description": "How many accounts reacted so, each once.",
791
803
"minimum": 0,
792
804
"type": "integer"
793
805
},
794
806
"reaction": {
795
807
"description": "The asker's dev.knotless.reaction record of this content on it, if they reacted so.",
796
808
"format": "at-uri",
797
809
"type": "string"
798
810
}
799
811
},
800
812
"required": [
801
813
"content",
802
814
"count"
803
815
],
804
816
"type": "object"
805
817
},
806
818
"reactionState": {
807
819
"description": "The reactions to a pull, an issue or a comment.",
808
820
"properties": {
809
821
"reactions": {
810
822
"description": "By content, in the order dev.knotless.defs#reactionContent lists them; a content no account reacted with is left out.",
811
823
"items": {
812
824
"ref": "#reactionCountView",
813
825
"type": "ref"
814
826
},
815
827
"type": "array"
816
828
},
817
829
"subject": {
818
830
"description": "The pull, issue or comment.",
819
831
"format": "at-uri",
820
832
"type": "string"
821
833
}
822
834
},
823
835
"required": [
824
836
"subject",
825
837
"reactions"
826
838
],
827
839
"type": "object"
828
840
},
829
841
"releaseFileView": {
830
842
"description": "One file of a release.",
831
843
"properties": {
832
844
"name": {
833
845
"description": "Its name, as it is downloaded.",
834
846
"type": "string"
835
847
},
836
848
"sha256": {
837
849
"description": "The lowercase hex SHA-256 of the file, which a reader checks it against.",
838
850
"type": "string"
839
851
},
840
852
"size": {
841
853
"description": "Bytes in the file.",
842
854
"minimum": 1,
843
855
"type": "integer"
844
856
}
845
857
},
846
858
"required": [
847
859
"name",
848
860
"size",
849
861
"sha256"
850
862
],
851
863
"type": "object"
852
864
},
853
865
"releaseView": {
854
866
"description": "One version of a package a repository publishes, from its dev.knotless.release record, with its files and notes.",
855
867
"properties": {
856
868
"check": {
857
869
"description": "The dev.knotless.check of the run that built it, if its record names one.",
858
870
"format": "at-uri",
859
871
"type": "string"
860
872
},
861
873
"commit": {
862
874
"description": "The hex object ID of the commit its files were built from, if its record names one.",
863
875
"type": "string"
864
876
},
865
877
"createdAt": {
866
878
"description": "As its record says.",
867
879
"format": "datetime",
868
880
"type": "string"
869
881
},
870
882
"files": {
871
883
"description": "What it publishes, in its record's order.",
872
884
"items": {
873
885
"ref": "#releaseFileView",
874
886
"type": "ref"
875
887
},
876
888
"type": "array"
877
889
},
878
890
"html": {
879
891
"description": "`notes` made into HTML, as dev.knotless.getThread's comments are: raw HTML shown as text, and links made relative to the repository.",
880
892
"type": "string"
881
893
},
882
894
"image": {
883
895
"description": "True when its files are a container image's OCI layout: an `index.json` beside blobs named `sha256-<hex>`, pulled by `docker pull` rather than downloaded.",
884
896
"type": "boolean"
885
897
},
886
898
"latest": {
887
899
"description": "True for its package's latest version: the highest with no pre-release part.",
888
900
"type": "boolean"
889
901
},
890
902
"notes": {
891
903
"description": "What changed since the version before, in Markdown, as its record says.",
892
904
"type": "string"
893
905
},
894
906
"package": {
895
907
"description": "The package's name.",
896
908
"type": "string"
897
909
},
898
910
"uri": {
899
911
"description": "Its dev.knotless.release record.",
900
912
"format": "at-uri",
901
913
"type": "string"
902
914
},
903
915
"version": {
904
916
"description": "Its Semantic Versioning 2.0 version.",
905
917
"type": "string"
906
918
}
907
919
},
908
920
"required": [
909
921
"uri",
910
922
"package",
911
923
"version",
912
924
"files",
913
925
"createdAt"
914
926
],
915
927
"type": "object"
916
928
},
917
929
"releaseViewBasic": {
918
930
"description": "One version of a package a repository publishes, from its dev.knotless.release record: which, and when.",
919
931
"properties": {
920
932
"createdAt": {
921
933
"description": "As its record says.",
922
934
"format": "datetime",
923
935
"type": "string"
924
936
},
925
937
"image": {
926
938
"description": "True when its files are a container image's OCI layout, pulled by `docker pull` rather than downloaded.",
927
939
"type": "boolean"
928
940
},
929
941
"latest": {
930
942
"description": "True for its package's latest version: the highest with no pre-release part.",
931
943
"type": "boolean"
932
944
},
933
945
"package": {
934
946
"description": "The package's name.",
935
947
"type": "string"
936
948
},
937
949
"uri": {
938
950
"description": "Its dev.knotless.release record.",
939
951
"format": "at-uri",
940
952
"type": "string"
941
953
},
942
954
"version": {
943
955
"description": "Its Semantic Versioning 2.0 version.",
944
956
"type": "string"
945
957
}
946
958
},
947
959
"required": [
948
960
"uri",
949
961
"package",
950
962
"version",
951
963
"createdAt"
952
964
],
953
965
"type": "object"
954
966
},
955
967
"releasesView": {
956
968
"description": "What a repository publishes, in brief, for its pages to show under its name.",
957
969
"properties": {
958
970
"count": {
959
971
"description": "How many releases it has published, of all its packages.",
960
972
"minimum": 0,
961
973
"type": "integer"
962
974
},
963
975
"packages": {
964
976
"description": "Each package it publishes, by name.",
965
977
"items": {
966
978
"ref": "#packageView",
967
979
"type": "ref"
968
980
},
969
981
"type": "array"
970
982
},
971
983
"release": {
972
984
"description": "The release to show for it: the latest of the package named as the repository, else the newest that is its package's latest, or the newest of all when each is a pre-release.",
973
985
"ref": "#releaseViewBasic",
974
986
"type": "ref"
975
987
}
976
988
},
977
989
"required": [
978
990
"count",
979
991
"release",
980
992
"packages"
981
993
],
982
994
"type": "object"
983
995
},
984
996
"repoMade": {
985
997
"description": "A repository the pages made: created, forked, renamed or taken up.",
986
998
"properties": {
987
999
"name": {
988
1000
"description": "Its name, the record key.",
989
1001
"maxLength": 100,
990
1002
"type": "string"
991
1003
},
992
1004
"uri": {
993
1005
"description": "Its dev.knotless.repo record, by its owner's DID.",
994
1006
"format": "at-uri",
995
1007
"type": "string"
996
1008
}
997
1009
},
998
1010
"required": [
999
1011
"uri",
1000
1012
"name"
1001
1013
],
1002
1014
"type": "object"
1003
1015
},
1004
1016
"repoRef": {
1005
1017
"description": "A repository, as another record names it. The URI's name is the one the repository had when the record was written; a rename changes it, and a later repository can take it. The owner in the URI and `key` stay the repository's own, and are what a reader matches on.",
1006
1018
"properties": {
1007
1019
"key": {
1008
1020
"description": "The repository's `key`.",
1009
1021
"format": "tid",
1010
1022
"type": "string"
1011
1023
},
1012
1024
"uri": {
1013
1025
"description": "The dev.knotless.repo record, as it was named when this was written.",
1014
1026
"format": "at-uri",
1015
1027
"type": "string"
1016
1028
}
1017
1029
},
1018
1030
"required": [
1019
1031
"uri",
1020
1032
"key"
1021
1033
],
1022
1034
"type": "object"
1023
1035
},
1024
1036
"repoView": {
1025
1037
"description": "A repository among others, from its dev.knotless.repo record.",
1026
1038
"properties": {
1027
1039
"createdAt": {
1028
1040
"description": "As its record says.",
1029
1041
"format": "datetime",
1030
1042
"type": "string"
1031
1043
},
1032
1044
"description": {
1033
1045
"type": "string"
1034
1046
},
1035
1047
"forkCount": {
1036
1048
"description": "How many forks of it there are, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
1037
1049
"minimum": 0,
1038
1050
"type": "integer"
1039
1051
},
1040
1052
"forkOf": {
1041
1053
"description": "The repository it was forked from, if the appview knows it.",
1042
1054
"ref": "#repoViewBasic",
1043
1055
"type": "ref"
1044
1056
},
1045
1057
"language": {
1046
1058
"description": "The language most of its default branch is written in, as its file listing counts them. Absent when none is counted, or the appview could not read it.",
1047
1059
"ref": "#languageView",
1048
1060
"type": "ref"
1049
1061
},
1050
1062
"name": {
1051
1063
"description": "The repository's name: its record key.",
1052
1064
"type": "string"
1053
1065
},
1054
1066
"owner": {
1055
1067
"ref": "#actorView",
1056
1068
"type": "ref"
1057
1069
},
1058
1070
"private": {
1059
1071
"description": "Whether it is private, in a space: listed only to its owner, asking.",
1060
1072
"type": "boolean"
1061
1073
},
1062
1074
"starCount": {
1063
1075
"description": "How many accounts starred it, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
1064
1076
"minimum": 0,
1065
1077
"type": "integer"
1066
1078
},
1067
1079
"uri": {
1068
1080
"description": "Its dev.knotless.repo record, under the name it has now.",
1069
1081
"format": "at-uri",
1070
1082
"type": "string"
1071
1083
}
1072
1084
},
1073
1085
"required": [
1074
1086
"uri",
1075
1087
"owner",
1076
1088
"name",
1077
1089
"createdAt"
1078
1090
],
1079
1091
"type": "object"
1080
1092
},
1081
1093
"repoViewBasic": {
1082
1094
"description": "A repository, under the name it has now.",
1083
1095
"properties": {
1084
1096
"did": {
1085
1097
"description": "The repository's owner.",
1086
1098
"format": "did",
1087
1099
"type": "string"
1088
1100
},
1089
1101
"handle": {
1090
1102
"description": "The owner's handle, as in #actorView.",
1091
1103
"type": "string"
1092
1104
},
1093
1105
"name": {
1094
1106
"description": "The repository's name: its record key.",
1095
1107
"type": "string"
1096
1108
}
1097
1109
},
1098
1110
"required": [
1099
1111
"did",
1100
1112
"handle",
1101
1113
"name"
1102
1114
],
1103
1115
"type": "object"
1104
1116
},
1105
1117
"repoViewDetailed": {
1106
1118
"description": "A repository, with what its pages show above themselves.",
1107
1119
"properties": {
1108
1120
"card": {
1109
1121
"description": "The path, on this appview, of the picture a link to its pages unfurls into: a new one whenever the picture changes.",
1110
1122
"type": "string"
1111
1123
},
1112
1124
"defaultBranch": {
1113
1125
"description": "The branch its HEAD names: empty, for a repository never pushed.",
1114
1126
"type": "string"
1115
1127
},
1116
1128
"description": {
1117
1129
"type": "string"
1118
1130
},
1119
1131
"forkOf": {
1120
1132
"description": "The repository it was forked from, if the appview knows it.",
1121
1133
"ref": "#repoViewBasic",
1122
1134
"type": "ref"
1123
1135
},
1124
1136
"links": {
1125
1137
"description": "Links its pages show, in display order, as its record names them: its website first. Only http and https addresses.",
1126
1138
"items": {
1127
1139
"ref": "#link",
1128
1140
"type": "ref"
1129
1141
},
1130
1142
"type": "array"
1131
1143
},
1132
1144
"name": {
1133
1145
"description": "The repository's name: its record key.",
1134
1146
"type": "string"
1135
1147
},
1136
1148
"openIssues": {
1137
1149
"minimum": 0,
1138
1150
"type": "integer"
1139
1151
},
1140
1152
"openPulls": {
1141
1153
"minimum": 0,
1142
1154
"type": "integer"
1143
1155
},
1144
1156
"owner": {
1145
1157
"ref": "#actorView",
1146
1158
"type": "ref"
1147
1159
},
1148
1160
"private": {
1149
1161
"description": "Whether it is private, in a space: shown only to its members, each logged in to this appview.",
1150
1162
"type": "boolean"
1151
1163
},
1152
1164
"releases": {
1153
1165
"description": "What it publishes, in brief, as the appview has indexed. Absent when it has published nothing, for a private repository, which cannot publish, and from an appview that keeps no index.",
1154
1166
"ref": "#releasesView",
1155
1167
"type": "ref"
1156
1168
},
1157
1169
"starCount": {
1158
1170
"description": "How many accounts starred it, as the appview has indexed. Absent for a private repository, which cannot be starred, and from an appview that keeps no index.",
1159
1171
"minimum": 0,
1160
1172
"type": "integer"
1161
1173
},
1162
1174
"uri": {
1163
1175
"description": "Its dev.knotless.repo record, under the name it has now.",
1164
1176
"format": "at-uri",
1165
1177
"type": "string"
1166
1178
},
1167
1179
"viewer": {
1168
1180
"description": "What the account asking has to do with it; absent when no one asks.",
1169
1181
"ref": "#repoViewerState",
1170
1182
"type": "ref"
1171
1183
}
1172
1184
},
1173
1185
"required": [
1174
1186
"uri",
1175
1187
"owner",
1176
1188
"name",
1177
1189
"defaultBranch",
1178
1190
"openPulls",
1179
1191
"openIssues",
1180
1192
"card"
1181
1193
],
1182
1194
"type": "object"
1183
1195
},
1184
1196
"repoViewerState": {
1185
1197
"description": "What the account asking a query has to do with a repository.",
1186
1198
"properties": {
1187
1199
"star": {
1188
1200
"description": "Its dev.knotless.star record naming the repository, if it starred it.",
1189
1201
"format": "at-uri",
1190
1202
"type": "string"
1191
1203
},
1192
1204
"transfer": {
1193
1205
"description": "Where the owner has offered to move the repository, when it is offered to the account asking, which can take it up (dev.knotless.acceptTransfer).",
1194
1206
"ref": "#repoViewBasic",
1195
1207
"type": "ref"
1196
1208
}
1197
1209
},
1198
1210
"type": "object"
1199
1211
},
1200
1212
"reviewView": {
1201
1213
"description": "Where one reviewer stands on a pull: their latest comment with a verdict. A comment without one leaves it as it was, and a pull's author reviews nothing of their own.",
1202
1214
"properties": {
1203
1215
"commit": {
1204
1216
"description": "The hex object ID of the head it looked at.",
1205
1217
"type": "string"
1206
1218
},
1207
1219
"maintainer": {
1208
1220
"description": "Whether the reviewer is the repository's owner or a collaborator.",
1209
1221
"type": "boolean"
1210
1222
},
1211
1223
"outdated": {
1212
1224
"description": "Whether the open pull has moved past the head it looked at: an approval then stands for what the pull was, not what it is.",
1213
1225
"type": "boolean"
1214
1226
},
1215
1227
"reviewer": {
1216
1228
"ref": "#actorView",
1217
1229
"type": "ref"
1218
1230
},
1219
1231
"uri": {
1220
1232
"description": "The dev.knotless.comment that reviewed it.",
1221
1233
"format": "at-uri",
1222
1234
"type": "string"
1223
1235
},
1224
1236
"verdict": {
1225
1237
"description": "`approve`, or `changes` for one that asked for changes.",
1226
1238
"knownValues": [
1227
1239
"approve",
1228
1240
"changes"
1229
1241
],
1230
1242
"type": "string"
1231
1243
}
1232
1244
},
1233
1245
"required": [
1234
1246
"reviewer",
1235
1247
"verdict",
1236
1248
"uri",
1237
1249
"outdated",
1238
1250
"maintainer"
1239
1251
],
1240
1252
"type": "object"
1241
1253
},
1242
1254
"starState": {
1243
1255
"description": "A repository's stars, as starring or unstarring it leaves them.",
1244
1256
"properties": {
1245
1257
"star": {
1246
1258
"description": "The asker's dev.knotless.star record naming it; absent once unstarred.",
1247
1259
"format": "at-uri",
1248
1260
"type": "string"
1249
1261
},
1250
1262
"starCount": {
1251
1263
"description": "How many accounts starred it now.",
1252
1264
"minimum": 0,
1253
1265
"type": "integer"
1254
1266
}
1255
1267
},
1256
1268
"required": [
1257
1269
"starCount"
1258
1270
],
1259
1271
"type": "object"
1260
1272
}
1261
1273
},
1262
1274
"description": "Definitions shared by the knotless lexicons.",
1263
1275
"id": "dev.knotless.defs",
1264
1276
"lexicon": 1
1265
1277
}