full diff

dev.knotless.createCommit

From
bafyreihppjs6wvgvs7ihm2hfxrjtx46rrpslmwcvps5xioqln3xwet3yza indexed 2026-10-28 21:21 UTC View this version
To
bafyreic7log7ym5iviz7wwnz6djxv5s7q5nmtgfwlogdrfsgvfh425wrre indexed 2026-10-29 23:27 UTC View this version

Compatibility

breaking 2 breaking changes, 8 non-breaking changes.

Breaking changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.createCommit#edit", src: "dev.knotless.createCommit#edit", tgt: "dev.knotless.createCommit#edit.new", kind: "prop", name: Some("new") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.createCommit#edit", src: "dev.knotless.createCommit#edit", tgt: "dev.knotless.createCommit#edit.old", kind: "prop", name: Some("old") }
Non-breaking changes (8)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createCommit#change.edits" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createCommit#change.edits:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createCommit#edit" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createCommit#edit.new" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.createCommit#edit.old" }
  • AddedEdge AddedEdge { src: "dev.knotless.createCommit#change", tgt: "dev.knotless.createCommit#change.edits", kind: "prop", name: Some("edits") }
  • AddedEdge AddedEdge { src: "dev.knotless.createCommit#change.edits", tgt: "dev.knotless.createCommit#change.edits:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.createCommit#change.edits:items", tgt: "dev.knotless.createCommit#edit", kind: "ref", name: None }

Migration guidance

Added

  • AddedVertex { vertex_id: "dev.knotless.createCommit#change.edits" }
  • AddedVertex { vertex_id: "dev.knotless.createCommit#change.edits:items" }
  • AddedVertex { vertex_id: "dev.knotless.createCommit#edit" }
  • AddedVertex { vertex_id: "dev.knotless.createCommit#edit.new" }
  • AddedVertex { vertex_id: "dev.knotless.createCommit#edit.old" }

Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.createCommit#edit", src: "dev.knotless.createCommit#edit", tgt: "dev.knotless.createCommit#edit.new", kind: "prop", name: Some("new") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.createCommit#edit", src: "dev.knotless.createCommit#edit", tgt: "dev.knotless.createCommit#edit.old", kind: "prop", name: Some("old") }
  • Non-breaking: AddedEdge { src: "dev.knotless.createCommit#change", tgt: "dev.knotless.createCommit#change.edits", kind: "prop", name: Some("edits") }
  • Non-breaking: AddedEdge { src: "dev.knotless.createCommit#change.edits", tgt: "dev.knotless.createCommit#change.edits:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.createCommit#change.edits:items", tgt: "dev.knotless.createCommit#edit", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "author": {
55 "description": "Who the commit names as its author, when not the gateway's default.",
66 "properties": {
77 "email": {
88 "maxLength": 1000,
99 "type": "string"
1010 },
1111 "name": {
1212 "maxLength": 1000,
1313 "type": "string"
1414 }
1515 },
1616 "required": [
1717 "name",
1818 "email"
1919 ],
2020 "type": "object"
2121 },
2222 "change": {
23 "description": "One path written or deleted.",
23 "description": "One path written, edited or deleted.",
2424 "properties": {
2525 "data": {
26 "description": "The file's new contents; absent to delete it.",
26 "description": "The file's new contents; absent, with no `edits`, to delete it.",
2727 "type": "bytes"
2828 },
29 "edits": {
30 "description": "Replacements in the file as the commit's parent holds it, made in order, when `data` is absent. The file keeps its mode. Fails with 409 when one's `old` is not in the file exactly once.",
31 "items": {
32 "ref": "#edit",
33 "type": "ref"
34 },
35 "type": "array"
36 },
2937 "executable": {
3038 "default": false,
3139 "type": "boolean"
3240 },
3341 "path": {
3442 "description": "Relative to the repository root.",
3543 "maxLength": 4096,
3644 "type": "string"
3745 }
3846 },
3947 "required": [
4048 "path"
4149 ],
4250 "type": "object"
4351 },
52 "edit": {
53 "description": "One replacement in a text file.",
54 "properties": {
55 "new": {
56 "description": "What takes its place.",
57 "maxLength": 20000,
58 "type": "string"
59 },
60 "old": {
61 "description": "Text the file holds exactly once.",
62 "maxLength": 20000,
63 "minLength": 1,
64 "type": "string"
65 }
66 },
67 "required": [
68 "old",
69 "new"
70 ],
71 "type": "object"
72 },
4473 "main": {
4574 "description": "Fails with 409 when a change touches a path that moved since `base`, or when the branch kept moving under the batch.",
4675 "input": {
4776 "encoding": "application/json",
4877 "schema": {
4978 "properties": {
5079 "author": {
5180 "ref": "#author",
5281 "type": "ref"
5382 },
5483 "base": {
5584 "description": "The hex object ID of the commit the changes were made against. Without it the changes apply to whatever the branch holds.",
5685 "maxLength": 64,
5786 "minLength": 40,
5887 "type": "string"
5988 },
6089 "branch": {
6190 "description": "Without refs/heads/. Created when absent, from `base`, or else from the default branch's tip.",
6291 "maxLength": 255,
6392 "type": "string"
6493 },
6594 "changes": {
6695 "items": {
6796 "ref": "#change",
6897 "type": "ref"
6998 },
7099 "type": "array"
71100 },
72101 "message": {
73102 "maxLength": 20000,
74103 "type": "string"
75104 },
76105 "name": {
77106 "description": "The repository's name: its dev.knotless.repo record key.",
78107 "maxLength": 100,
79108 "type": "string"
80109 },
81110 "repo": {
82111 "description": "The repository's owner.",
83112 "format": "did",
84113 "type": "string"
85114 }
86115 },
87116 "required": [
88117 "repo",
89118 "name",
90119 "branch",
91120 "message",
92121 "changes"
93122 ],
94123 "type": "object"
95124 }
96125 },
97126 "output": {
98127 "encoding": "application/json",
99128 "schema": {
100129 "properties": {
101130 "batched": {
102131 "description": "How many commits went out in the write that carried this one.",
103132 "minimum": 0,
104133 "type": "integer"
105134 },
106135 "changed": {
107136 "description": "False when the changes left the tree as it was, and no commit was made.",
108137 "type": "boolean"
109138 },
110139 "parent": {
111140 "description": "The hex object ID the commit was built on; absent for a branch's first commit.",
112141 "maxLength": 64,
113142 "minLength": 40,
114143 "type": "string"
115144 },
116145 "sha": {
117146 "description": "The hex object ID of the commit, or of the branch tip when nothing changed.",
118147 "maxLength": 64,
119148 "minLength": 40,
120149 "type": "string"
121150 }
122151 },
123152 "required": [
124153 "sha",
125154 "changed",
126155 "batched"
127156 ],
128157 "type": "object"
129158 }
130159 },
131160 "type": "procedure"
132161 }
133162 },
134163 "description": "Commits file changes to a branch through a gateway its owner has delegated writes to, without a clone. Commits to one branch that arrive together are built into one chain and written as one ref update. Requires a service token from the caller's PDS, audience the gateway's DID, for this method; the caller must be the owner or a collaborator.",
135164 "id": "dev.knotless.createCommit",
136165 "lexicon": 1
137166}

Compare other versions