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