dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+56 -0

From

CID
bafyreifmrcakod5...
Indexed At
2026-10-29 04:27 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 14 non-breaking changes.

Breaking Changes (5)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteEnd", kind: "prop", name: Some("byteEnd") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#byteSlice", src: "dev.knotless.defs#byteSlice", tgt: "dev.knotless.defs#byteSlice.byteStart", kind: "prop", name: Some("byteStart") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.features", kind: "prop", name: Some("features") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#facet", src: "dev.knotless.defs#facet", tgt: "dev.knotless.defs#facet.index", kind: "prop", name: Some("index") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#mention", src: "dev.knotless.defs#mention", tgt: "dev.knotless.defs#mention.did", kind: "prop", name: Some("did") }
Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteEnd" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteStart" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet.index" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#mention" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#mention.did" }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features", tgt: "dev.knotless.defs#facet.features:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features:items", tgt: "dev.knotless.defs#facet.features:items:variant0", kind: "variant", name: Some("#mention") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.features:items:variant0", tgt: "dev.knotless.defs#mention", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#facet.index", tgt: "dev.knotless.defs#byteSlice", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice" }
  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteEnd" }
  • AddedVertex { vertex_id: "dev.knotless.defs#byteSlice.byteStart" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.features:items:variant0" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet.index" }
  • AddedVertex { vertex_id: "dev.knotless.defs#mention" }
  • AddedVertex { vertex_id: "dev.knotless.defs#mention.did" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@