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