dev.knotless.defs

lexicons.knotless.dev

Schema Diff

+95 -1

From

CID
bafyreidju3fiv4e...
Indexed At
2026-10-29 05: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, 32 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 (32)
  • 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#itemView.draft" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
  • 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#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
  • 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#itemView.draft" }
  • AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers" }
  • AddedVertex { vertex_id: "dev.knotless.defs#itemView.reviewers:items" }
  • 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#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") }
  • 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") }
  • 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#itemView", tgt: "dev.knotless.defs#itemView.draft", kind: "prop", name: Some("draft") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView", tgt: "dev.knotless.defs#itemView.reviewers", kind: "prop", name: Some("reviewers") }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers", tgt: "dev.knotless.defs#itemView.reviewers:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.defs#itemView.reviewers:items", tgt: "dev.knotless.defs#actorView", kind: "ref", name: None }
  • 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
        },
534 +
        "draft": {
535 +
          "description": "A pull its author has not marked ready to merge. Not, when absent.",
536 +
          "type": "boolean"
537 +
        },
515 538
        "kind": {
516 539
          "knownValues": [
517 540
            "pull",
518 541
            "issue"
519 542
          ],
520 543
          "type": "string"
521 544
        },
522 545
        "labels": {
523 546
          "description": "The labels it carries, as the repository defines them, in the order it does. Absent when it carries none.",
524 547
          "items": {
525 548
            "ref": "dev.knotless.repo#label",
526 549
            "type": "ref"
527 550
          },
528 551
          "type": "array"
529 552
        },
553 +
        "reviewers": {
554 +
          "description": "Those a pull's author asks to review it, in the order asked. Absent when it asks no one.",
555 +
          "items": {
556 +
            "ref": "#actorView",
557 +
            "type": "ref"
558 +
          },
559 +
          "type": "array"
560 +
        },
530 561
        "state": {
531 562
          "description": "A merged pull is merged; a closed one, or an issue, closed.",
532 563
          "knownValues": [
533 564
            "open",
534 565
            "closed",
535 566
            "merged"
536 567
          ],
537 568
          "type": "string"
538 569
        },
539 570
        "title": {
540 571
          "type": "string"
541 572
        },
542 573
        "updatedAt": {
543 574
          "description": "When its author last changed its title or body, if they have.",
544 575
          "format": "datetime",
545 576
          "type": "string"
546 577
        },
547 578
        "uri": {
548 579
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
549 580
          "format": "at-uri",
550 581
          "type": "string"
551 582
        }
552 583
      },
553 584
      "required": [
554 585
        "uri",
555 586
        "kind",
556 587
        "title",
557 588
        "state",
558 589
        "author",
559 590
        "createdAt",
560 591
        "comments"
561 592
      ],
562 593
      "type": "object"
563 594
    },
564 595
    "itemViewBasic": {
565 596
      "description": "A pull or an issue, by its record and its title.",
566 597
      "properties": {
567 598
        "title": {
568 599
          "type": "string"
569 600
        },
570 601
        "uri": {
571 602
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
572 603
          "format": "at-uri",
573 604
          "type": "string"
574 605
        }
575 606
      },
576 607
      "required": [
577 608
        "uri",
578 609
        "title"
579 610
      ],
580 611
      "type": "object"
581 612
    },
582 613
    "languageView": {
583 614
      "description": "One language a repository is written in.",
584 615
      "properties": {
585 616
        "bytes": {
586 617
          "minimum": 0,
587 618
          "type": "integer"
588 619
        },
589 620
        "color": {
590 621
          "description": "Its color, as linguist has it.",
591 622
          "type": "string"
592 623
        },
593 624
        "name": {
594 625
          "description": "Its name, or `Other` for the languages each under one percent.",
595 626
          "type": "string"
596 627
        },
597 628
        "permille": {
598 629
          "description": "Its share of all the bytes counted, in tenths of a percent.",
599 630
          "maximum": 1000,
600 631
          "minimum": 0,
601 632
          "type": "integer"
602 633
        }
603 634
      },
604 635
      "required": [
605 636
        "name",
606 637
        "color",
607 638
        "bytes",
608 639
        "permille"
609 640
      ],
610 641
      "type": "object"
611 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 +
    },
612 706
    "link": {
613 707
      "description": "A link shown on an account's profile or a repository's pages.",
614 708
      "properties": {
615 709
        "title": {
616 710
          "description": "What to call it. Readers fall back to the address's host.",
617 711
          "maxGraphemes": 40,
618 712
          "maxLength": 320,
619 713
          "type": "string"
620 714
        },
621 715
        "url": {
622 716
          "description": "Where it goes: an http or https address.",
623 717
          "format": "uri",
624 718
          "type": "string"
625 719
        }
626 720
      },
627 721
      "required": [
628 722
        "url"
629 723
      ],
630 724
      "type": "object"
631 725
    },
632 726
    "mention": {
633 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.",
634 728
      "properties": {
635 729
        "did": {
636 730
          "format": "did",
637 731
          "type": "string"
638 732
        }
639 733
      },
640 734
      "required": [
641 735
        "did"
642 736
      ],
643 737
      "type": "object"
644 738
    },
645 739
    "minutesView": {
646 740
      "description": "The minutes a runner the repository names counts for its owner's public repositories, from its dev.knotless.minutes record.",
647 741
      "properties": {
648 742
        "allowance": {
649 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.",
650 744
          "minimum": 1,
651 745
          "type": "integer"
652 746
        },
653 747
        "freeing": {
654 748
          "description": "When minutes counted now stop counting, soonest first.",
655 749
          "items": {
656 750
            "ref": "dev.knotless.minutes#freeing",
657 751
            "type": "ref"
658 752
          },
659 753
          "type": "array"
660 754
        },
661 755
        "minutes": {
662 756
          "description": "The minutes steps took in the 30 days up to `updatedAt`.",
663 757
          "minimum": 0,
664 758
          "type": "integer"
665 759
        },
666 760
        "runner": {
667 761
          "description": "The runner's account.",
668 762
          "ref": "#actorView",
669 763
          "type": "ref"
670 764
        },
671 765
        "updatedAt": {
672 766
          "description": "When the runner last counted.",
673 767
          "format": "datetime",
674 768
          "type": "string"
675 769
        }
676 770
      },
677 771
      "required": [
678 772
        "runner",
679 773
        "minutes",
680 774
        "updatedAt"
681 775
      ],
682 776
      "type": "object"
683 777
    },
684 778
    "packageView": {
685 779
      "description": "One package a repository publishes.",
686 780
      "properties": {
687 781
        "image": {
688 782
          "description": "True when its latest version, or its newest when none is latest, is a container image.",
689 783
          "type": "boolean"
690 784
        },
691 785
        "latest": {
692 786
          "description": "Its latest version: the highest with no pre-release part. Absent when it has only pre-releases.",
693 787
          "type": "string"
694 788
        },
695 789
        "name": {
696 790
          "description": "The package's name.",
697 791
          "type": "string"
698 792
        },
699 793
        "releaseCount": {
700 794
          "description": "How many versions of it are published.",
701 795
          "minimum": 0,
702 796
          "type": "integer"
703 797
        }
704 798
      },
705 799
      "required": [
706 800
        "name"
707 801
      ],
708 802
      "type": "object"
709 803
    },
710 804
    "pullHeadView": {
711 805
      "description": "What a pull brings in: a branch of a repository.",
712 806
      "properties": {
713 807
        "branch": {
714 808
          "type": "string"
715 809
        },
716 810
        "repo": {
717 811
          "description": "The repository the branch is on, if the index knows it.",
718 812
          "ref": "#repoViewBasic",
719 813
          "type": "ref"
720 814
        }
721 815
      },
722 816
      "required": [
723 817
        "branch"
724 818
      ],
725 819
      "type": "object"
726 820
    },
727 821
    "queueStateView": {
728 822
      "description": "Where an open pull stands in its target branch's merge queue.",
729 823
      "properties": {
730 824
        "checks": {
731 825
          "description": "While its batch is being checked or landing, the batch's checks; once ejected by checks that failed, those.",
732 826
          "items": {
733 827
            "ref": "#checkView",
734 828
            "type": "ref"
735 829
          },
736 830
          "type": "array"
737 831
        },
738 832
        "createdAt": {
739 833
          "description": "When it was queued or ejected.",
740 834
          "format": "datetime",
741 835
          "type": "string"
742 836
        },
743 837
        "reason": {
744 838
          "description": "Why it was ejected, as the runner said.",
745 839
          "type": "string"
746 840
        },
747 841
        "said": {
748 842
          "description": "Where it stands, in words: `Queued, 3rd of 5`, `In a batch of 4 being checked`, `Landing`, or why it was ejected.",
749 843
          "type": "string"
750 844
        },
751 845
        "state": {
752 846
          "knownValues": [
753 847
            "queued",
754 848
            "ejected"
755 849
          ],
756 850
          "type": "string"
757 851
        }
758 852
      },
759 853
      "required": [
760 854
        "state",
761 855
        "createdAt",
762 856
        "said",
763 857
        "checks"
764 858
      ],
765 859
      "type": "object"
766 860
    },
767 861
    "reactionContent": {
768 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.",
769 863
      "knownValues": [
770 864
        "+1",
771 865
        "-1",
772 866
        "laugh",
773 867
        "hooray",
774 868
        "confused",
775 869
        "heart",
776 870
        "rocket",
777 871
        "eyes"
778 872
      ],
779 873
      "maxLength": 32,
780 874
      "type": "string"
781 875
    },
782 876
    "reactionCountView": {
783 877
      "description": "How many accounts reacted to something with one content.",
784 878
      "properties": {
785 879
        "content": {
786 880
          "ref": "#reactionContent",
787 881
          "type": "ref"
788 882
        },
789 883
        "count": {
790 884
          "description": "How many accounts reacted so, each once.",
791 885
          "minimum": 0,
792 886
          "type": "integer"
793 887
        },
794 888
        "reaction": {
795 889
          "description": "The asker's dev.knotless.reaction record of this content on it, if they reacted so.",
796 890
          "format": "at-uri",
797 891
          "type": "string"
798 892
        }
799 893
      },
800 894
      "required": [
801 895
        "content",
802 896
        "count"
803 897
      ],
804 898
      "type": "object"
805 899
    },
806 900
    "reactionState": {
807 901
      "description": "The reactions to a pull, an issue or a comment.",
808 902
      "properties": {
809 903
        "reactions": {
810 904
          "description": "By content, in the order dev.knotless.defs#reactionContent lists them; a content no account reacted with is left out.",
811 905
          "items": {
812 906
            "ref": "#reactionCountView",
813 907
            "type": "ref"
814 908
          },
815 909
          "type": "array"
816 910
        },
817 911
        "subject": {
818 912
          "description": "The pull, issue or comment.",
819 913
          "format": "at-uri",
820 914
          "type": "string"
821 915
        }
822 916
      },
823 917
      "required": [
824 918
        "subject",
825 919
        "reactions"
826 920
      ],
827 921
      "type": "object"
828 922
    },
829 923
    "releaseFileView": {
830 924
      "description": "One file of a release.",
831 925
      "properties": {
832 926
        "name": {
833 927
          "description": "Its name, as it is downloaded.",
834 928
          "type": "string"
835 929
        },
836 930
        "sha256": {
837 931
          "description": "The lowercase hex SHA-256 of the file, which a reader checks it against.",
838 932
          "type": "string"
839 933
        },
840 934
        "size": {
841 935
          "description": "Bytes in the file.",
842 936
          "minimum": 1,
843 937
          "type": "integer"
844 938
        }
845 939
      },
846 940
      "required": [
847 941
        "name",
848 942
        "size",
849 943
        "sha256"
850 944
      ],
851 945
      "type": "object"
852 946
    },
853 947
    "releaseView": {
854 948
      "description": "One version of a package a repository publishes, from its dev.knotless.release record, with its files and notes.",
855 949
      "properties": {
856 950
        "check": {
857 951
          "description": "The dev.knotless.check of the run that built it, if its record names one.",
858 952
          "format": "at-uri",
859 953
          "type": "string"
860 954
        },
861 955
        "commit": {
862 956
          "description": "The hex object ID of the commit its files were built from, if its record names one.",
863 957
          "type": "string"
864 958
        },
865 959
        "createdAt": {
866 960
          "description": "As its record says.",
867 961
          "format": "datetime",
868 962
          "type": "string"
869 963
        },
870 964
        "files": {
871 965
          "description": "What it publishes, in its record's order.",
872 966
          "items": {
873 967
            "ref": "#releaseFileView",
874 968
            "type": "ref"
875 969
          },
876 970
          "type": "array"
877 971
        },
878 972
        "html": {
879 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.",
880 974
          "type": "string"
881 975
        },
882 976
        "image": {
883 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.",
884 978
          "type": "boolean"
885 979
        },
886 980
        "latest": {
887 981
          "description": "True for its package's latest version: the highest with no pre-release part.",
888 982
          "type": "boolean"
889 983
        },
890 984
        "notes": {
891 985
          "description": "What changed since the version before, in Markdown, as its record says.",
892 986
          "type": "string"
893 987
        },
894 988
        "package": {
895 989
          "description": "The package's name.",
896 990
          "type": "string"
897 991
        },
898 992
        "uri": {
899 993
          "description": "Its dev.knotless.release record.",
900 994
          "format": "at-uri",
901 995
          "type": "string"
902 996
        },
903 997
        "version": {
904 998
          "description": "Its Semantic Versioning 2.0 version.",
905 999
          "type": "string"
906 1000
        }
907 1001
      },
908 1002
      "required": [
909 1003
        "uri",
910 1004
        "package",
911 1005
        "version",
912 1006
        "files",
913 1007
        "createdAt"
914 1008
      ],
915 1009
      "type": "object"
916 1010
    },
917 1011
    "releaseViewBasic": {
918 1012
      "description": "One version of a package a repository publishes, from its dev.knotless.release record: which, and when.",
919 1013
      "properties": {
920 1014
        "createdAt": {
921 1015
          "description": "As its record says.",
922 1016
          "format": "datetime",
923 1017
          "type": "string"
924 1018
        },
925 1019
        "image": {
926 1020
          "description": "True when its files are a container image's OCI layout, pulled by `docker pull` rather than downloaded.",
927 1021
          "type": "boolean"
928 1022
        },
929 1023
        "latest": {
930 1024
          "description": "True for its package's latest version: the highest with no pre-release part.",
931 1025
          "type": "boolean"
932 1026
        },
933 1027
        "package": {
934 1028
          "description": "The package's name.",
935 1029
          "type": "string"
936 1030
        },
937 1031
        "uri": {
938 1032
          "description": "Its dev.knotless.release record.",
939 1033
          "format": "at-uri",
940 1034
          "type": "string"
941 1035
        },
942 1036
        "version": {
943 1037
          "description": "Its Semantic Versioning 2.0 version.",
944 1038
          "type": "string"
945 1039
        }
946 1040
      },
947 1041
      "required": [
948 1042
        "uri",
949 1043
        "package",
950 1044
        "version",
951 1045
        "createdAt"
952 1046
      ],
953 1047
      "type": "object"
954 1048
    },
955 1049
    "releasesView": {
956 1050
      "description": "What a repository publishes, in brief, for its pages to show under its name.",
957 1051
      "properties": {
958 1052
        "count": {
959 1053
          "description": "How many releases it has published, of all its packages.",
960 1054
          "minimum": 0,
961 1055
          "type": "integer"
962 1056
        },
963 1057
        "packages": {
964 1058
          "description": "Each package it publishes, by name.",
965 1059
          "items": {
966 1060
            "ref": "#packageView",
967 1061
            "type": "ref"
968 1062
          },
969 1063
          "type": "array"
970 1064
        },
971 1065
        "release": {
972 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.",
973 1067
          "ref": "#releaseViewBasic",
974 1068
          "type": "ref"
975 1069
        }
976 1070
      },
977 1071
      "required": [
978 1072
        "count",
979 1073
        "release",
980 1074
        "packages"
981 1075
      ],
982 1076
      "type": "object"
983 1077
    },
984 1078
    "repoMade": {
985 1079
      "description": "A repository the pages made: created, forked, renamed or taken up.",
986 1080
      "properties": {
987 1081
        "name": {
988 1082
          "description": "Its name, the record key.",
989 1083
          "maxLength": 100,
990 1084
          "type": "string"
991 1085
        },
992 1086
        "uri": {
993 1087
          "description": "Its dev.knotless.repo record, by its owner's DID.",
994 1088
          "format": "at-uri",
995 1089
          "type": "string"
996 1090
        }
997 1091
      },
998 1092
      "required": [
999 1093
        "uri",
1000 1094
        "name"
1001 1095
      ],
1002 1096
      "type": "object"
1003 1097
    },
1004 1098
    "repoRef": {
1005 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.",
1006 1100
      "properties": {
1007 1101
        "key": {
1008 1102
          "description": "The repository's `key`.",
1009 1103
          "format": "tid",
1010 1104
          "type": "string"
1011 1105
        },
1012 1106
        "uri": {
1013 1107
          "description": "The dev.knotless.repo record, as it was named when this was written.",
1014 1108
          "format": "at-uri",
1015 1109
          "type": "string"
1016 1110
        }
1017 1111
      },
1018 1112
      "required": [
1019 1113
        "uri",
1020 1114
        "key"
1021 1115
      ],
1022 1116
      "type": "object"
1023 1117
    },
1024 1118
    "repoView": {
1025 1119
      "description": "A repository among others, from its dev.knotless.repo record.",
1026 1120
      "properties": {
1027 1121
        "createdAt": {
1028 1122
          "description": "As its record says.",
1029 1123
          "format": "datetime",
1030 1124
          "type": "string"
1031 1125
        },
1032 1126
        "description": {
1033 1127
          "type": "string"
1034 1128
        },
1035 1129
        "forkCount": {
1036 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.",
1037 1131
          "minimum": 0,
1038 1132
          "type": "integer"
1039 1133
        },
1040 1134
        "forkOf": {
1041 1135
          "description": "The repository it was forked from, if the appview knows it.",
1042 1136
          "ref": "#repoViewBasic",
1043 1137
          "type": "ref"
1044 1138
        },
1045 1139
        "language": {
1046 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.",
1047 1141
          "ref": "#languageView",
1048 1142
          "type": "ref"
1049 1143
        },
1050 1144
        "name": {
1051 1145
          "description": "The repository's name: its record key.",
1052 1146
          "type": "string"
1053 1147
        },
1054 1148
        "owner": {
1055 1149
          "ref": "#actorView",
1056 1150
          "type": "ref"
1057 1151
        },
1058 1152
        "private": {
1059 1153
          "description": "Whether it is private, in a space: listed only to its owner, asking.",
1060 1154
          "type": "boolean"
1061 1155
        },
1062 1156
        "starCount": {
1063 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.",
1064 1158
          "minimum": 0,
1065 1159
          "type": "integer"
1066 1160
        },
1067 1161
        "uri": {
1068 1162
          "description": "Its dev.knotless.repo record, under the name it has now.",
1069 1163
          "format": "at-uri",
1070 1164
          "type": "string"
1071 1165
        }
1072 1166
      },
1073 1167
      "required": [
1074 1168
        "uri",
1075 1169
        "owner",
1076 1170
        "name",
1077 1171
        "createdAt"
1078 1172
      ],
1079 1173
      "type": "object"
1080 1174
    },
1081 1175
    "repoViewBasic": {
1082 1176
      "description": "A repository, under the name it has now.",
1083 1177
      "properties": {
1084 1178
        "did": {
1085 1179
          "description": "The repository's owner.",
1086 1180
          "format": "did",
1087 1181
          "type": "string"
1088 1182
        },
1089 1183
        "handle": {
1090 1184
          "description": "The owner's handle, as in #actorView.",
1091 1185
          "type": "string"
1092 1186
        },
1093 1187
        "name": {
1094 1188
          "description": "The repository's name: its record key.",
1095 1189
          "type": "string"
1096 1190
        }
1097 1191
      },
1098 1192
      "required": [
1099 1193
        "did",
1100 1194
        "handle",
1101 1195
        "name"
1102 1196
      ],
1103 1197
      "type": "object"
1104 1198
    },
1105 1199
    "repoViewDetailed": {
1106 1200
      "description": "A repository, with what its pages show above themselves.",
1107 1201
      "properties": {
1108 1202
        "card": {
1109 1203
          "description": "The path, on this appview, of the picture a link to its pages unfurls into: a new one whenever the picture changes.",
1110 1204
          "type": "string"
1111 1205
        },
1112 1206
        "defaultBranch": {
1113 1207
          "description": "The branch its HEAD names: empty, for a repository never pushed.",
1114 1208
          "type": "string"
1115 1209
        },
1116 1210
        "description": {
1117 1211
          "type": "string"
1118 1212
        },
1119 1213
        "forkOf": {
1120 1214
          "description": "The repository it was forked from, if the appview knows it.",
1121 1215
          "ref": "#repoViewBasic",
1122 1216
          "type": "ref"
1123 1217
        },
1124 1218
        "links": {
1125 1219
          "description": "Links its pages show, in display order, as its record names them: its website first. Only http and https addresses.",
1126 1220
          "items": {
1127 1221
            "ref": "#link",
1128 1222
            "type": "ref"
1129 1223
          },
1130 1224
          "type": "array"
1131 1225
        },
1132 1226
        "name": {
1133 1227
          "description": "The repository's name: its record key.",
1134 1228
          "type": "string"
1135 1229
        },
1136 1230
        "openIssues": {
1137 1231
          "minimum": 0,
1138 1232
          "type": "integer"
1139 1233
        },
1140 1234
        "openPulls": {
1141 1235
          "minimum": 0,
1142 1236
          "type": "integer"
1143 1237
        },
1144 1238
        "owner": {
1145 1239
          "ref": "#actorView",
1146 1240
          "type": "ref"
1147 1241
        },
1148 1242
        "private": {
1149 1243
          "description": "Whether it is private, in a space: shown only to its members, each logged in to this appview.",
1150 1244
          "type": "boolean"
1151 1245
        },
1152 1246
        "releases": {
1153 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.",
1154 1248
          "ref": "#releasesView",
1155 1249
          "type": "ref"
1156 1250
        },
1157 1251
        "starCount": {
1158 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.",
1159 1253
          "minimum": 0,
1160 1254
          "type": "integer"
1161 1255
        },
1162 1256
        "uri": {
1163 1257
          "description": "Its dev.knotless.repo record, under the name it has now.",
1164 1258
          "format": "at-uri",
1165 1259
          "type": "string"
1166 1260
        },
1167 1261
        "viewer": {
1168 1262
          "description": "What the account asking has to do with it; absent when no one asks.",
1169 1263
          "ref": "#repoViewerState",
1170 1264
          "type": "ref"
1171 1265
        }
1172 1266
      },
1173 1267
      "required": [
1174 1268
        "uri",
1175 1269
        "owner",
1176 1270
        "name",
1177 1271
        "defaultBranch",
1178 1272
        "openPulls",
1179 1273
        "openIssues",
1180 1274
        "card"
1181 1275
      ],
1182 1276
      "type": "object"
1183 1277
    },
1184 1278
    "repoViewerState": {
1185 1279
      "description": "What the account asking a query has to do with a repository.",
1186 1280
      "properties": {
1187 1281
        "star": {
1188 1282
          "description": "Its dev.knotless.star record naming the repository, if it starred it.",
1189 1283
          "format": "at-uri",
1190 1284
          "type": "string"
1191 1285
        },
1192 1286
        "transfer": {
1193 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).",
1194 1288
          "ref": "#repoViewBasic",
1195 1289
          "type": "ref"
1196 1290
        }
1197 1291
      },
1198 1292
      "type": "object"
1199 1293
    },
1200 1294
    "reviewView": {
1201 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.",
1202 1296
      "properties": {
1203 1297
        "commit": {
1204 1298
          "description": "The hex object ID of the head it looked at.",
1205 1299
          "type": "string"
1206 1300
        },
1207 1301
        "maintainer": {
1208 1302
          "description": "Whether the reviewer is the repository's owner or a collaborator.",
1209 1303
          "type": "boolean"
1210 1304
        },
1211 1305
        "outdated": {
1212 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.",
1213 1307
          "type": "boolean"
1214 1308
        },
1215 1309
        "reviewer": {
1216 1310
          "ref": "#actorView",
1217 1311
          "type": "ref"
1218 1312
        },
1219 1313
        "uri": {
1220 1314
          "description": "The dev.knotless.comment that reviewed it.",
1221 1315
          "format": "at-uri",
1222 1316
          "type": "string"
1223 1317
        },
1224 1318
        "verdict": {
1225 1319
          "description": "`approve`, or `changes` for one that asked for changes.",
1226 1320
          "knownValues": [
1227 1321
            "approve",
1228 1322
            "changes"
1229 1323
          ],
1230 1324
          "type": "string"
1231 1325
        }
1232 1326
      },
1233 1327
      "required": [
1234 1328
        "reviewer",
1235 1329
        "verdict",
1236 1330
        "uri",
1237 1331
        "outdated",
1238 1332
        "maintainer"
1239 1333
      ],
1240 1334
      "type": "object"
1241 1335
    },
1242 1336
    "starState": {
1243 1337
      "description": "A repository's stars, as starring or unstarring it leaves them.",
1244 1338
      "properties": {
1245 1339
        "star": {
1246 1340
          "description": "The asker's dev.knotless.star record naming it; absent once unstarred.",
1247 1341
          "format": "at-uri",
1248 1342
          "type": "string"
1249 1343
        },
1250 1344
        "starCount": {
1251 1345
          "description": "How many accounts starred it now.",
1252 1346
          "minimum": 0,
1253 1347
          "type": "integer"
1254 1348
        }
1255 1349
      },
1256 1350
      "required": [
1257 1351
        "starCount"
1258 1352
      ],
1259 1353
      "type": "object"
1260 1354
    }
1261 1355
  },
1262 1356
  "description": "Definitions shared by the knotless lexicons.",
1263 1357
  "id": "dev.knotless.defs",
1264 1358
  "lexicon": 1
1265 1359
}

Compare Other Versions

Lexicon Garden

@