dev.knotless.createComment
Schema Diff
+61 -3
Compatibility Analysis
Breaking Changes Detected
3 breaking changes, 19 non-breaking changes.
Breaking Changes (3)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.body", kind: "prop", name: Some("body") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.path", kind: "prop", name: Some("path") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.line", kind: "prop", name: Some("line") }
Non-Breaking Changes (19)
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.body" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.line" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.path" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.side" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.startLine" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment:input.images" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment:input.images:items" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment:input.lines" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment:input.lines:items" }
- AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#image" }
- AddedEdge AddedEdge { src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.side", kind: "prop", name: Some("side") }
- AddedEdge AddedEdge { src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.startLine", kind: "prop", name: Some("startLine") }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input", tgt: "dev.knotless.createComment:input.images", kind: "prop", name: Some("images") }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input", tgt: "dev.knotless.createComment:input.lines", kind: "prop", name: Some("lines") }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input.images", tgt: "dev.knotless.createComment:input.images:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input.images:items", tgt: "dev.knotless.defs#image", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input.lines", tgt: "dev.knotless.createComment:input.lines:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "dev.knotless.createComment:input.lines:items", tgt: "dev.knotless.createComment#lineComment", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "dev.knotless.createComment#lineComment" }AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.body" }AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.line" }AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.path" }AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.side" }AddedVertex { vertex_id: "dev.knotless.createComment#lineComment.startLine" }AddedVertex { vertex_id: "dev.knotless.createComment:input.images" }AddedVertex { vertex_id: "dev.knotless.createComment:input.images:items" }AddedVertex { vertex_id: "dev.knotless.createComment:input.lines" }AddedVertex { vertex_id: "dev.knotless.createComment:input.lines:items" }AddedVertex { vertex_id: "dev.knotless.defs#image" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.body", kind: "prop", name: Some("body") }
- Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.path", kind: "prop", name: Some("path") }
- Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.createComment#lineComment", src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.line", kind: "prop", name: Some("line") }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.side", kind: "prop", name: Some("side") }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment#lineComment", tgt: "dev.knotless.createComment#lineComment.startLine", kind: "prop", name: Some("startLine") }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input", tgt: "dev.knotless.createComment:input.images", kind: "prop", name: Some("images") }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input", tgt: "dev.knotless.createComment:input.lines", kind: "prop", name: Some("lines") }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input.images", tgt: "dev.knotless.createComment:input.images:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input.images:items", tgt: "dev.knotless.defs#image", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input.lines", tgt: "dev.knotless.createComment:input.lines:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "dev.knotless.createComment:input.lines:items", tgt: "dev.knotless.createComment#lineComment", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"lineComment": {
5
+
"description": "A comment on lines of a pull's diff.",
6
+
"properties": {
7
+
"body": {
8
+
"description": "What it says, in Markdown.",
9
+
"maxLength": 20000,
10
+
"type": "string"
11
+
},
12
+
"line": {
13
+
"description": "The last line commented on, counting from 1, in the file as it is on that side.",
14
+
"minimum": 1,
15
+
"type": "integer"
16
+
},
17
+
"path": {
18
+
"description": "The file's path on the side commented on.",
19
+
"maxLength": 1024,
20
+
"type": "string"
21
+
},
22
+
"side": {
23
+
"description": "`new`, the side the pull brings in, or `old`, the side it leaves. Absent, `new`.",
24
+
"knownValues": [
25
+
"old",
26
+
"new"
27
+
],
28
+
"maxLength": 16,
29
+
"type": "string"
30
+
},
31
+
"startLine": {
32
+
"description": "The first, for more than one line.",
33
+
"minimum": 1,
34
+
"type": "integer"
35
+
}
36
+
},
37
+
"required": [
38
+
"path",
39
+
"line",
40
+
"body"
41
+
],
42
+
"type": "object"
43
+
},
4
44
"main": {
5
45
"description": "Writes a dev.knotless.comment record in the account logged in to this appview's web pages, as `knotless comment` does: with a verdict, a review of the pull's head as it is now. Requires the session cookie the pages' login sets: the appview writes with the session it keeps for that account. Clients holding their own session write the record themselves.",
6
46
"errors": [
7
47
{
8
48
"description": "No such repository.",
9
49
"name": "NotFound"
10
50
},
11
51
{
12
52
"description": "No account is logged in to the pages, or its session has ended.",
13
53
"name": "AuthenticationRequired"
14
54
}
15
55
],
16
56
"input": {
17
57
"encoding": "application/json",
18
58
"schema": {
19
59
"properties": {
20
60
"body": {
21
61
"description": "What it says, in Markdown.",
22
62
"maxLength": 20000,
23
63
"type": "string"
24
64
},
65
+
"images": {
66
+
"description": "Pictures uploaded with dev.knotless.uploadImage; those the body links to are attached.",
67
+
"items": {
68
+
"ref": "dev.knotless.defs#image",
69
+
"type": "ref"
70
+
},
71
+
"maxLength": 32,
72
+
"type": "array"
73
+
},
74
+
"lines": {
75
+
"description": "Comments on lines of a pull's diff, at its head as it is now, each starting a thread, written at once: as the review's when it has a body or a verdict, else on their own.",
76
+
"items": {
77
+
"ref": "#lineComment",
78
+
"type": "ref"
79
+
},
80
+
"maxLength": 100,
81
+
"type": "array"
82
+
},
25
83
"repo": {
26
84
"description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
27
85
"format": "at-uri",
28
86
"type": "string"
29
87
},
30
88
"subject": {
31
-
"description": "The dev.knotless.pull or dev.knotless.issue commented on.",
89
+
"description": "The dev.knotless.pull or dev.knotless.issue commented on; or a dev.knotless.comment to answer, in the thread it starts or is in.",
32
90
"format": "at-uri",
33
91
"type": "string"
34
92
},
35
93
"verdict": {
36
94
"description": "For a review of a pull: `approve`, or `changes` to ask for changes.",
37
95
"knownValues": [
38
96
"approve",
39
97
"changes"
40
98
],
41
99
"maxLength": 64,
42
100
"type": "string"
43
101
}
44
102
},
45
103
"required": [
46
104
"repo",
47
105
"subject",
48
106
"body"
49
107
],
50
108
"type": "object"
51
109
}
52
110
},
53
111
"output": {
54
112
"encoding": "application/json",
55
113
"schema": {
56
114
"properties": {
57
115
"uri": {
58
-
"description": "The dev.knotless.comment record written.",
116
+
"description": "The dev.knotless.comment record written: with lines, the review, or without one the first line comment.",
59
117
"format": "at-uri",
60
118
"type": "string"
61
119
}
62
120
},
63
121
"required": [
64
122
"uri"
65
123
],
66
124
"type": "object"
67
125
}
68
126
},
69
127
"type": "procedure"
70
128
}
71
129
},
72
-
"description": "Comments on a pull or an issue, or reviews a pull, as the account logged in to this appview's pages.",
130
+
"description": "Comments on a pull or an issue, or on lines of a pull's diff, or answers a comment, or reviews a pull, as the account logged in to this appview's pages.",
73
131
"id": "dev.knotless.createComment",
74
132
"lexicon": 1
75
133
}