dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+15 -0

From

CID
bafyreih3zkw5oxw...
Indexed At
2026-10-28 23:15 UTC
View this version

To

CID
bafyreifhhdt6qll...
Indexed At
2026-10-29 03:14 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#repoView.forkCount" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#repoView.language" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#repoView.starCount" }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#repoView", tgt: "dev.knotless.defs#repoView.forkCount", kind: "prop", name: Some("forkCount") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#repoView", tgt: "dev.knotless.defs#repoView.language", kind: "prop", name: Some("language") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#repoView", tgt: "dev.knotless.defs#repoView.starCount", kind: "prop", name: Some("starCount") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#repoView.language", tgt: "dev.knotless.defs#languageView", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.defs#repoView.forkCount" }
  • AddedVertex { vertex_id: "dev.knotless.defs#repoView.language" }
  • AddedVertex { vertex_id: "dev.knotless.defs#repoView.starCount" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@