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