dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+12 -0

From

CID
bafyreidju3fiv4e...
Indexed At
2026-10-29 05:15 UTC
View this version

To

CID
bafyreicf5g3ssof...
Indexed At
2026-10-29 06:15 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 7 non-breaking changes.

Non-Breaking Changes (7)
  • 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" }
  • 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 }

Migration Guidance

Added Elements

  • 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" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@