dev.knotless.createComment

lexicons.knotless.dev

Schema Diff

+52 -3

From

CID
bafyreicl6pbf625...
Indexed At
2026-10-28 23:15 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 13 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 (13)
  • 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.lines" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createComment:input.lines:items" }
  • 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.lines", kind: "prop", name: Some("lines") }
  • 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.lines" }
  • AddedVertex { vertex_id: "dev.knotless.createComment:input.lines:items" }

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.lines", kind: "prop", name: Some("lines") }
  • 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
            },
25 65
            "images": {
26 66
              "description": "Pictures uploaded with dev.knotless.uploadImage; those the body links to are attached.",
27 67
              "items": {
28 68
                "ref": "dev.knotless.defs#image",
29 69
                "type": "ref"
30 70
              },
31 71
              "maxLength": 32,
32 72
              "type": "array"
33 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 +
            },
34 83
            "repo": {
35 84
              "description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
36 85
              "format": "at-uri",
37 86
              "type": "string"
38 87
            },
39 88
            "subject": {
40 -
              "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.",
41 90
              "format": "at-uri",
42 91
              "type": "string"
43 92
            },
44 93
            "verdict": {
45 94
              "description": "For a review of a pull: `approve`, or `changes` to ask for changes.",
46 95
              "knownValues": [
47 96
                "approve",
48 97
                "changes"
49 98
              ],
50 99
              "maxLength": 64,
51 100
              "type": "string"
52 101
            }
53 102
          },
54 103
          "required": [
55 104
            "repo",
56 105
            "subject",
57 106
            "body"
58 107
          ],
59 108
          "type": "object"
60 109
        }
61 110
      },
62 111
      "output": {
63 112
        "encoding": "application/json",
64 113
        "schema": {
65 114
          "properties": {
66 115
            "uri": {
67 -
              "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.",
68 117
              "format": "at-uri",
69 118
              "type": "string"
70 119
            }
71 120
          },
72 121
          "required": [
73 122
            "uri"
74 123
          ],
75 124
          "type": "object"
76 125
        }
77 126
      },
78 127
      "type": "procedure"
79 128
    }
80 129
  },
81 -
  "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.",
82 131
  "id": "dev.knotless.createComment",
83 132
  "lexicon": 1
84 133
}

Compare Other Versions

Lexicon Garden

@