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