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