dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+83 -1

From

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

To

CID
bafyreic7gmox6tq...
Indexed At
2026-10-29 06:54 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 25 non-breaking changes.

Breaking Changes (5)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.text", kind: "prop", name: Some("text") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineTextView", src: "dev.knotless.defs#lineTextView", tgt: "dev.knotless.defs#lineTextView.number", kind: "prop", name: Some("number") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.outdated", kind: "prop", name: Some("outdated") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.line", kind: "prop", name: Some("line") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.defs#lineView", src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.path", kind: "prop", name: Some("path") }
Non-Breaking Changes (25)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.reply" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.resolved" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#commentView.review" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.number" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.text" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.outdated" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.path" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.side" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#lineView.startLine" }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.line", kind: "prop", name: Some("line") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.reply", kind: "prop", name: Some("reply") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.resolved", kind: "prop", name: Some("resolved") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView", tgt: "dev.knotless.defs#commentView.review", kind: "prop", name: Some("review") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#commentView.line", tgt: "dev.knotless.defs#lineView", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.lines", kind: "prop", name: Some("lines") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.side", kind: "prop", name: Some("side") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView", tgt: "dev.knotless.defs#lineView.startLine", kind: "prop", name: Some("startLine") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView.lines", tgt: "dev.knotless.defs#lineView.lines:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#lineView.lines:items", tgt: "dev.knotless.defs#lineTextView", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.line" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.reply" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.resolved" }
  • AddedVertex { vertex_id: "dev.knotless.defs#commentView.review" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.number" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineTextView.text" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.line" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.lines:items" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.outdated" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.path" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.side" }
  • AddedVertex { vertex_id: "dev.knotless.defs#lineView.startLine" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@