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": 1137166
}