dev.knotless.defs
Schema Diff
+95 -1
Compatibility Analysis
Breaking Changes Detected
5 breaking changes, 32 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 (32)
- 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#itemView.draft" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
- 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#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
- 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#itemView.draft" }AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }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#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") }
- 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") }
- 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#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
- 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
},
534
+
"draft": {
535
+
"description": "A pull its author has not marked ready to merge. Not, when absent.",
536
+
"type": "boolean"
537
+
},
515
538
"kind": {
516
539
"knownValues": [
517
540
"pull",
518
541
"issue"
519
542
],
520
543
"type": "string"
521
544
},
522
545
"labels": {
523
546
"description": "The labels it carries, as the repository defines them, in the order it does. Absent when it carries none.",
524
547
"items": {
525
548
"ref": "dev.knotless.repo#label",
526
549
"type": "ref"
527
550
},
528
551
"type": "array"
529
552
},
553
+
"reviewers": {
554
+
"description": "Those a pull's author asks to review it, in the order asked. Absent when it asks no one.",
555
+
"items": {
556
+
"ref": "#actorView",
557
+
"type": "ref"
558
+
},
559
+
"type": "array"
560
+
},
530
561
"state": {
531
562
"description": "A merged pull is merged; a closed one, or an issue, closed.",
532
563
"knownValues": [
533
564
"open",
534
565
"closed",
535
566
"merged"
536
567
],
537
568
"type": "string"
538
569
},
539
570
"title": {
540
571
"type": "string"
541
572
},
542
573
"updatedAt": {
543
574
"description": "When its author last changed its title or body, if they have.",
544
575
"format": "datetime",
545
576
"type": "string"
546
577
},
547
578
"uri": {
548
579
"description": "Its dev.knotless.pull or dev.knotless.issue record.",
549
580
"format": "at-uri",
550
581
"type": "string"
551
582
}
552
583
},
553
584
"required": [
554
585
"uri",
555
586
"kind",
556
587
"title",
557
588
"state",
558
589
"author",
559
590
"createdAt",
560
591
"comments"
561
592
],
562
593
"type": "object"
563
594
},
564
595
"itemViewBasic": {
565
596
"description": "A pull or an issue, by its record and its title.",
566
597
"properties": {
567
598
"title": {
568
599
"type": "string"
569
600
},
570
601
"uri": {
571
602
"description": "Its dev.knotless.pull or dev.knotless.issue record.",
572
603
"format": "at-uri",
573
604
"type": "string"
574
605
}
575
606
},
576
607
"required": [
577
608
"uri",
578
609
"title"
579
610
],
580
611
"type": "object"
581
612
},
582
613
"languageView": {
583
614
"description": "One language a repository is written in.",
584
615
"properties": {
585
616
"bytes": {
586
617
"minimum": 0,
587
618
"type": "integer"
588
619
},
589
620
"color": {
590
621
"description": "Its color, as linguist has it.",
591
622
"type": "string"
592
623
},
593
624
"name": {
594
625
"description": "Its name, or `Other` for the languages each under one percent.",
595
626
"type": "string"
596
627
},
597
628
"permille": {
598
629
"description": "Its share of all the bytes counted, in tenths of a percent.",
599
630
"maximum": 1000,
600
631
"minimum": 0,
601
632
"type": "integer"
602
633
}
603
634
},
604
635
"required": [
605
636
"name",
606
637
"color",
607
638
"bytes",
608
639
"permille"
609
640
],
610
641
"type": "object"
611
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
+
},
612
706
"link": {
613
707
"description": "A link shown on an account's profile or a repository's pages.",
614
708
"properties": {
615
709
"title": {
616
710
"description": "What to call it. Readers fall back to the address's host.",
617
711
"maxGraphemes": 40,
618
712
"maxLength": 320,
619
713
"type": "string"
620
714
},
621
715
"url": {
622
716
"description": "Where it goes: an http or https address.",
623
717
"format": "uri",
624
718
"type": "string"
625
719
}
626
720
},
627
721
"required": [
628
722
"url"
629
723
],
630
724
"type": "object"
631
725
},
632
726
"mention": {
633
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.",
634
728
"properties": {
635
729
"did": {
636
730
"format": "did",
637
731
"type": "string"
638
732
}
639
733
},
640
734
"required": [
641
735
"did"
642
736
],
643
737
"type": "object"
644
738
},
645
739
"minutesView": {
646
740
"description": "The minutes a runner the repository names counts for its owner's public repositories, from its dev.knotless.minutes record.",
647
741
"properties": {
648
742
"allowance": {
649
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.",
650
744
"minimum": 1,
651
745
"type": "integer"
652
746
},
653
747
"freeing": {
654
748
"description": "When minutes counted now stop counting, soonest first.",
655
749
"items": {
656
750
"ref": "dev.knotless.minutes#freeing",
657
751
"type": "ref"
658
752
},
659
753
"type": "array"
660
754
},
661
755
"minutes": {
662
756
"description": "The minutes steps took in the 30 days up to `updatedAt`.",
663
757
"minimum": 0,
664
758
"type": "integer"
665
759
},
666
760
"runner": {
667
761
"description": "The runner's account.",
668
762
"ref": "#actorView",
669
763
"type": "ref"
670
764
},
671
765
"updatedAt": {
672
766
"description": "When the runner last counted.",
673
767
"format": "datetime",
674
768
"type": "string"
675
769
}
676
770
},
677
771
"required": [
678
772
"runner",
679
773
"minutes",
680
774
"updatedAt"
681
775
],
682
776
"type": "object"
683
777
},
684
778
"packageView": {
685
779
"description": "One package a repository publishes.",
686
780
"properties": {
687
781
"image": {
688
782
"description": "True when its latest version, or its newest when none is latest, is a container image.",
689
783
"type": "boolean"
690
784
},
691
785
"latest": {
692
786
"description": "Its latest version: the highest with no pre-release part. Absent when it has only pre-releases.",
693
787
"type": "string"
694
788
},
695
789
"name": {
696
790
"description": "The package's name.",
697
791
"type": "string"
698
792
},
699
793
"releaseCount": {
700
794
"description": "How many versions of it are published.",
701
795
"minimum": 0,
702
796
"type": "integer"
703
797
}
704
798
},
705
799
"required": [
706
800
"name"
707
801
],
708
802
"type": "object"
709
803
},
710
804
"pullHeadView": {
711
805
"description": "What a pull brings in: a branch of a repository.",
712
806
"properties": {
713
807
"branch": {
714
808
"type": "string"
715
809
},
716
810
"repo": {
717
811
"description": "The repository the branch is on, if the index knows it.",
718
812
"ref": "#repoViewBasic",
719
813
"type": "ref"
720
814
}
721
815
},
722
816
"required": [
723
817
"branch"
724
818
],
725
819
"type": "object"
726
820
},
727
821
"queueStateView": {
728
822
"description": "Where an open pull stands in its target branch's merge queue.",
729
823
"properties": {
730
824
"checks": {
731
825
"description": "While its batch is being checked or landing, the batch's checks; once ejected by checks that failed, those.",
732
826
"items": {
733
827
"ref": "#checkView",
734
828
"type": "ref"
735
829
},
736
830
"type": "array"
737
831
},
738
832
"createdAt": {
739
833
"description": "When it was queued or ejected.",
740
834
"format": "datetime",
741
835
"type": "string"
742
836
},
743
837
"reason": {
744
838
"description": "Why it was ejected, as the runner said.",
745
839
"type": "string"
746
840
},
747
841
"said": {
748
842
"description": "Where it stands, in words: `Queued, 3rd of 5`, `In a batch of 4 being checked`, `Landing`, or why it was ejected.",
749
843
"type": "string"
750
844
},
751
845
"state": {
752
846
"knownValues": [
753
847
"queued",
754
848
"ejected"
755
849
],
756
850
"type": "string"
757
851
}
758
852
},
759
853
"required": [
760
854
"state",
761
855
"createdAt",
762
856
"said",
763
857
"checks"
764
858
],
765
859
"type": "object"
766
860
},
767
861
"reactionContent": {
768
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.",
769
863
"knownValues": [
770
864
"+1",
771
865
"-1",
772
866
"laugh",
773
867
"hooray",
774
868
"confused",
775
869
"heart",
776
870
"rocket",
777
871
"eyes"
778
872
],
779
873
"maxLength": 32,
780
874
"type": "string"
781
875
},
782
876
"reactionCountView": {
783
877
"description": "How many accounts reacted to something with one content.",
784
878
"properties": {
785
879
"content": {
786
880
"ref": "#reactionContent",
787
881
"type": "ref"
788
882
},
789
883
"count": {
790
884
"description": "How many accounts reacted so, each once.",
791
885
"minimum": 0,
792
886
"type": "integer"
793
887
},
794
888
"reaction": {
795
889
"description": "The asker's dev.knotless.reaction record of this content on it, if they reacted so.",
796
890
"format": "at-uri",
797
891
"type": "string"
798
892
}
799
893
},
800
894
"required": [
801
895
"content",
802
896
"count"
803
897
],
804
898
"type": "object"
805
899
},
806
900
"reactionState": {
807
901
"description": "The reactions to a pull, an issue or a comment.",
808
902
"properties": {
809
903
"reactions": {
810
904
"description": "By content, in the order dev.knotless.defs#reactionContent lists them; a content no account reacted with is left out.",
811
905
"items": {
812
906
"ref": "#reactionCountView",
813
907
"type": "ref"
814
908
},
815
909
"type": "array"
816
910
},
817
911
"subject": {
818
912
"description": "The pull, issue or comment.",
819
913
"format": "at-uri",
820
914
"type": "string"
821
915
}
822
916
},
823
917
"required": [
824
918
"subject",
825
919
"reactions"
826
920
],
827
921
"type": "object"
828
922
},
829
923
"releaseFileView": {
830
924
"description": "One file of a release.",
831
925
"properties": {
832
926
"name": {
833
927
"description": "Its name, as it is downloaded.",
834
928
"type": "string"
835
929
},
836
930
"sha256": {
837
931
"description": "The lowercase hex SHA-256 of the file, which a reader checks it against.",
838
932
"type": "string"
839
933
},
840
934
"size": {
841
935
"description": "Bytes in the file.",
842
936
"minimum": 1,
843
937
"type": "integer"
844
938
}
845
939
},
846
940
"required": [
847
941
"name",
848
942
"size",
849
943
"sha256"
850
944
],
851
945
"type": "object"
852
946
},
853
947
"releaseView": {
854
948
"description": "One version of a package a repository publishes, from its dev.knotless.release record, with its files and notes.",
855
949
"properties": {
856
950
"check": {
857
951
"description": "The dev.knotless.check of the run that built it, if its record names one.",
858
952
"format": "at-uri",
859
953
"type": "string"
860
954
},
861
955
"commit": {
862
956
"description": "The hex object ID of the commit its files were built from, if its record names one.",
863
957
"type": "string"
864
958
},
865
959
"createdAt": {
866
960
"description": "As its record says.",
867
961
"format": "datetime",
868
962
"type": "string"
869
963
},
870
964
"files": {
871
965
"description": "What it publishes, in its record's order.",
872
966
"items": {
873
967
"ref": "#releaseFileView",
874
968
"type": "ref"
875
969
},
876
970
"type": "array"
877
971
},
878
972
"html": {
879
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.",
880
974
"type": "string"
881
975
},
882
976
"image": {
883
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.",
884
978
"type": "boolean"
885
979
},
886
980
"latest": {
887
981
"description": "True for its package's latest version: the highest with no pre-release part.",
888
982
"type": "boolean"
889
983
},
890
984
"notes": {
891
985
"description": "What changed since the version before, in Markdown, as its record says.",
892
986
"type": "string"
893
987
},
894
988
"package": {
895
989
"description": "The package's name.",
896
990
"type": "string"
897
991
},
898
992
"uri": {
899
993
"description": "Its dev.knotless.release record.",
900
994
"format": "at-uri",
901
995
"type": "string"
902
996
},
903
997
"version": {
904
998
"description": "Its Semantic Versioning 2.0 version.",
905
999
"type": "string"
906
1000
}
907
1001
},
908
1002
"required": [
909
1003
"uri",
910
1004
"package",
911
1005
"version",
912
1006
"files",
913
1007
"createdAt"
914
1008
],
915
1009
"type": "object"
916
1010
},
917
1011
"releaseViewBasic": {
918
1012
"description": "One version of a package a repository publishes, from its dev.knotless.release record: which, and when.",
919
1013
"properties": {
920
1014
"createdAt": {
921
1015
"description": "As its record says.",
922
1016
"format": "datetime",
923
1017
"type": "string"
924
1018
},
925
1019
"image": {
926
1020
"description": "True when its files are a container image's OCI layout, pulled by `docker pull` rather than downloaded.",
927
1021
"type": "boolean"
928
1022
},
929
1023
"latest": {
930
1024
"description": "True for its package's latest version: the highest with no pre-release part.",
931
1025
"type": "boolean"
932
1026
},
933
1027
"package": {
934
1028
"description": "The package's name.",
935
1029
"type": "string"
936
1030
},
937
1031
"uri": {
938
1032
"description": "Its dev.knotless.release record.",
939
1033
"format": "at-uri",
940
1034
"type": "string"
941
1035
},
942
1036
"version": {
943
1037
"description": "Its Semantic Versioning 2.0 version.",
944
1038
"type": "string"
945
1039
}
946
1040
},
947
1041
"required": [
948
1042
"uri",
949
1043
"package",
950
1044
"version",
951
1045
"createdAt"
952
1046
],
953
1047
"type": "object"
954
1048
},
955
1049
"releasesView": {
956
1050
"description": "What a repository publishes, in brief, for its pages to show under its name.",
957
1051
"properties": {
958
1052
"count": {
959
1053
"description": "How many releases it has published, of all its packages.",
960
1054
"minimum": 0,
961
1055
"type": "integer"
962
1056
},
963
1057
"packages": {
964
1058
"description": "Each package it publishes, by name.",
965
1059
"items": {
966
1060
"ref": "#packageView",
967
1061
"type": "ref"
968
1062
},
969
1063
"type": "array"
970
1064
},
971
1065
"release": {
972
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.",
973
1067
"ref": "#releaseViewBasic",
974
1068
"type": "ref"
975
1069
}
976
1070
},
977
1071
"required": [
978
1072
"count",
979
1073
"release",
980
1074
"packages"
981
1075
],
982
1076
"type": "object"
983
1077
},
984
1078
"repoMade": {
985
1079
"description": "A repository the pages made: created, forked, renamed or taken up.",
986
1080
"properties": {
987
1081
"name": {
988
1082
"description": "Its name, the record key.",
989
1083
"maxLength": 100,
990
1084
"type": "string"
991
1085
},
992
1086
"uri": {
993
1087
"description": "Its dev.knotless.repo record, by its owner's DID.",
994
1088
"format": "at-uri",
995
1089
"type": "string"
996
1090
}
997
1091
},
998
1092
"required": [
999
1093
"uri",
1000
1094
"name"
1001
1095
],
1002
1096
"type": "object"
1003
1097
},
1004
1098
"repoRef": {
1005
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.",
1006
1100
"properties": {
1007
1101
"key": {
1008
1102
"description": "The repository's `key`.",
1009
1103
"format": "tid",
1010
1104
"type": "string"
1011
1105
},
1012
1106
"uri": {
1013
1107
"description": "The dev.knotless.repo record, as it was named when this was written.",
1014
1108
"format": "at-uri",
1015
1109
"type": "string"
1016
1110
}
1017
1111
},
1018
1112
"required": [
1019
1113
"uri",
1020
1114
"key"
1021
1115
],
1022
1116
"type": "object"
1023
1117
},
1024
1118
"repoView": {
1025
1119
"description": "A repository among others, from its dev.knotless.repo record.",
1026
1120
"properties": {
1027
1121
"createdAt": {
1028
1122
"description": "As its record says.",
1029
1123
"format": "datetime",
1030
1124
"type": "string"
1031
1125
},
1032
1126
"description": {
1033
1127
"type": "string"
1034
1128
},
1035
1129
"forkCount": {
1036
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.",
1037
1131
"minimum": 0,
1038
1132
"type": "integer"
1039
1133
},
1040
1134
"forkOf": {
1041
1135
"description": "The repository it was forked from, if the appview knows it.",
1042
1136
"ref": "#repoViewBasic",
1043
1137
"type": "ref"
1044
1138
},
1045
1139
"language": {
1046
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.",
1047
1141
"ref": "#languageView",
1048
1142
"type": "ref"
1049
1143
},
1050
1144
"name": {
1051
1145
"description": "The repository's name: its record key.",
1052
1146
"type": "string"
1053
1147
},
1054
1148
"owner": {
1055
1149
"ref": "#actorView",
1056
1150
"type": "ref"
1057
1151
},
1058
1152
"private": {
1059
1153
"description": "Whether it is private, in a space: listed only to its owner, asking.",
1060
1154
"type": "boolean"
1061
1155
},
1062
1156
"starCount": {
1063
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.",
1064
1158
"minimum": 0,
1065
1159
"type": "integer"
1066
1160
},
1067
1161
"uri": {
1068
1162
"description": "Its dev.knotless.repo record, under the name it has now.",
1069
1163
"format": "at-uri",
1070
1164
"type": "string"
1071
1165
}
1072
1166
},
1073
1167
"required": [
1074
1168
"uri",
1075
1169
"owner",
1076
1170
"name",
1077
1171
"createdAt"
1078
1172
],
1079
1173
"type": "object"
1080
1174
},
1081
1175
"repoViewBasic": {
1082
1176
"description": "A repository, under the name it has now.",
1083
1177
"properties": {
1084
1178
"did": {
1085
1179
"description": "The repository's owner.",
1086
1180
"format": "did",
1087
1181
"type": "string"
1088
1182
},
1089
1183
"handle": {
1090
1184
"description": "The owner's handle, as in #actorView.",
1091
1185
"type": "string"
1092
1186
},
1093
1187
"name": {
1094
1188
"description": "The repository's name: its record key.",
1095
1189
"type": "string"
1096
1190
}
1097
1191
},
1098
1192
"required": [
1099
1193
"did",
1100
1194
"handle",
1101
1195
"name"
1102
1196
],
1103
1197
"type": "object"
1104
1198
},
1105
1199
"repoViewDetailed": {
1106
1200
"description": "A repository, with what its pages show above themselves.",
1107
1201
"properties": {
1108
1202
"card": {
1109
1203
"description": "The path, on this appview, of the picture a link to its pages unfurls into: a new one whenever the picture changes.",
1110
1204
"type": "string"
1111
1205
},
1112
1206
"defaultBranch": {
1113
1207
"description": "The branch its HEAD names: empty, for a repository never pushed.",
1114
1208
"type": "string"
1115
1209
},
1116
1210
"description": {
1117
1211
"type": "string"
1118
1212
},
1119
1213
"forkOf": {
1120
1214
"description": "The repository it was forked from, if the appview knows it.",
1121
1215
"ref": "#repoViewBasic",
1122
1216
"type": "ref"
1123
1217
},
1124
1218
"links": {
1125
1219
"description": "Links its pages show, in display order, as its record names them: its website first. Only http and https addresses.",
1126
1220
"items": {
1127
1221
"ref": "#link",
1128
1222
"type": "ref"
1129
1223
},
1130
1224
"type": "array"
1131
1225
},
1132
1226
"name": {
1133
1227
"description": "The repository's name: its record key.",
1134
1228
"type": "string"
1135
1229
},
1136
1230
"openIssues": {
1137
1231
"minimum": 0,
1138
1232
"type": "integer"
1139
1233
},
1140
1234
"openPulls": {
1141
1235
"minimum": 0,
1142
1236
"type": "integer"
1143
1237
},
1144
1238
"owner": {
1145
1239
"ref": "#actorView",
1146
1240
"type": "ref"
1147
1241
},
1148
1242
"private": {
1149
1243
"description": "Whether it is private, in a space: shown only to its members, each logged in to this appview.",
1150
1244
"type": "boolean"
1151
1245
},
1152
1246
"releases": {
1153
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.",
1154
1248
"ref": "#releasesView",
1155
1249
"type": "ref"
1156
1250
},
1157
1251
"starCount": {
1158
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.",
1159
1253
"minimum": 0,
1160
1254
"type": "integer"
1161
1255
},
1162
1256
"uri": {
1163
1257
"description": "Its dev.knotless.repo record, under the name it has now.",
1164
1258
"format": "at-uri",
1165
1259
"type": "string"
1166
1260
},
1167
1261
"viewer": {
1168
1262
"description": "What the account asking has to do with it; absent when no one asks.",
1169
1263
"ref": "#repoViewerState",
1170
1264
"type": "ref"
1171
1265
}
1172
1266
},
1173
1267
"required": [
1174
1268
"uri",
1175
1269
"owner",
1176
1270
"name",
1177
1271
"defaultBranch",
1178
1272
"openPulls",
1179
1273
"openIssues",
1180
1274
"card"
1181
1275
],
1182
1276
"type": "object"
1183
1277
},
1184
1278
"repoViewerState": {
1185
1279
"description": "What the account asking a query has to do with a repository.",
1186
1280
"properties": {
1187
1281
"star": {
1188
1282
"description": "Its dev.knotless.star record naming the repository, if it starred it.",
1189
1283
"format": "at-uri",
1190
1284
"type": "string"
1191
1285
},
1192
1286
"transfer": {
1193
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).",
1194
1288
"ref": "#repoViewBasic",
1195
1289
"type": "ref"
1196
1290
}
1197
1291
},
1198
1292
"type": "object"
1199
1293
},
1200
1294
"reviewView": {
1201
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.",
1202
1296
"properties": {
1203
1297
"commit": {
1204
1298
"description": "The hex object ID of the head it looked at.",
1205
1299
"type": "string"
1206
1300
},
1207
1301
"maintainer": {
1208
1302
"description": "Whether the reviewer is the repository's owner or a collaborator.",
1209
1303
"type": "boolean"
1210
1304
},
1211
1305
"outdated": {
1212
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.",
1213
1307
"type": "boolean"
1214
1308
},
1215
1309
"reviewer": {
1216
1310
"ref": "#actorView",
1217
1311
"type": "ref"
1218
1312
},
1219
1313
"uri": {
1220
1314
"description": "The dev.knotless.comment that reviewed it.",
1221
1315
"format": "at-uri",
1222
1316
"type": "string"
1223
1317
},
1224
1318
"verdict": {
1225
1319
"description": "`approve`, or `changes` for one that asked for changes.",
1226
1320
"knownValues": [
1227
1321
"approve",
1228
1322
"changes"
1229
1323
],
1230
1324
"type": "string"
1231
1325
}
1232
1326
},
1233
1327
"required": [
1234
1328
"reviewer",
1235
1329
"verdict",
1236
1330
"uri",
1237
1331
"outdated",
1238
1332
"maintainer"
1239
1333
],
1240
1334
"type": "object"
1241
1335
},
1242
1336
"starState": {
1243
1337
"description": "A repository's stars, as starring or unstarring it leaves them.",
1244
1338
"properties": {
1245
1339
"star": {
1246
1340
"description": "The asker's dev.knotless.star record naming it; absent once unstarred.",
1247
1341
"format": "at-uri",
1248
1342
"type": "string"
1249
1343
},
1250
1344
"starCount": {
1251
1345
"description": "How many accounts starred it now.",
1252
1346
"minimum": 0,
1253
1347
"type": "integer"
1254
1348
}
1255
1349
},
1256
1350
"required": [
1257
1351
"starCount"
1258
1352
],
1259
1353
"type": "object"
1260
1354
}
1261
1355
},
1262
1356
"description": "Definitions shared by the knotless lexicons.",
1263
1357
"id": "dev.knotless.defs",
1264
1358
"lexicon": 1
1265
1359
}