dev.knotless.getMergeStatus
Schema Diff
+3 -2
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "dev.knotless.getMergeStatus:output.state", sort: "knownValues", old_value: "[\"clean\",\"conflicting\",\"blocked\"]", new_value: "[\"clean\",\"conflicting\",\"blocked\",\"draft\"]" }
Migration Guidance
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "dev.knotless.getMergeStatus:output.state", sort: "knownValues", old_value: "[\"clean\",\"conflicting\",\"blocked\"]", new_value: "[\"clean\",\"conflicting\",\"blocked\",\"draft\"]" }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"conflict": {
5
5
"description": "A file that both sides changed so that they do not merge.",
6
6
"properties": {
7
7
"path": {
8
8
"description": "From the repository's root.",
9
9
"type": "string"
10
10
}
11
11
},
12
12
"required": [
13
13
"path"
14
14
],
15
15
"type": "object"
16
16
},
17
17
"main": {
18
18
"description": "Whether an open pull can merge now, decided as `knotless merge` decides it, without merging: whether its head merges with its target branch as it is now, and, in a repository that names runners, whether each workflow that runs on it passed there. And what the account asking may do to it: merge it, queue it, retarget it or run its checks again. Requires the session cookie the pages' login sets, or a service token from the caller's PDS, audience the appview's DID, for this method.",
19
19
"errors": [
20
20
{
21
21
"description": "No such repository.",
22
22
"name": "NotFound"
23
23
},
24
24
{
25
25
"description": "No one asked: log in to the pages first.",
26
26
"name": "AuthenticationRequired"
27
27
}
28
28
],
29
29
"output": {
30
30
"encoding": "application/json",
31
31
"schema": {
32
32
"properties": {
33
33
"base": {
34
34
"description": "The commit its target branch is at, in hex.",
35
35
"type": "string"
36
36
},
37
37
"checks": {
38
38
"description": "Where its checks stand at its head merged with its base: pending for those not run there; none when the repository names no runners, so a merge waits for none, or when it conflicts.",
39
39
"knownValues": [
40
40
"passed",
41
41
"failed",
42
42
"running",
43
43
"pending",
44
44
"none"
45
45
],
46
46
"type": "string"
47
47
},
48
48
"codeOwnersWarnings": {
49
49
"description": "The lines of the target branch's CODEOWNERS file that were skipped, and why: one naming a team, say.",
50
50
"items": {
51
51
"ref": "#note",
52
52
"type": "ref"
53
53
},
54
54
"type": "array"
55
55
},
56
56
"conflicts": {
57
57
"description": "The files that conflict.",
58
58
"items": {
59
59
"ref": "#conflict",
60
60
"type": "ref"
61
61
},
62
62
"type": "array"
63
63
},
64
64
"deletes": {
65
65
"description": "Its head branch, which merging deletes unless asked to keep it.",
66
66
"type": "string"
67
67
},
68
68
"head": {
69
69
"description": "The commit its head branch is at, in hex.",
70
70
"type": "string"
71
71
},
72
72
"may": {
73
73
"ref": "#permissions",
74
74
"type": "ref"
75
75
},
76
76
"method": {
77
77
"description": "How it would merge: a fast-forward when the base has not moved since its head branched off, else a merge commit; into a branch protected as linear, one squashed commit.",
78
78
"knownValues": [
79
79
"fastForward",
80
80
"merge",
81
81
"squash"
82
82
],
83
83
"type": "string"
84
84
},
85
85
"queueBlocked": {
86
86
"description": "Why the merge queue would not land it yet, when this server knows: undelegated when no runner the repository names may push, so its queue lands through this server's gateway, and the owner has not delegated writes to it.",
87
87
"knownValues": [
88
88
"undelegated"
89
89
],
90
90
"type": "string"
91
91
},
92
92
"queueOnly": {
93
93
"description": "Its target branch takes pulls only through the merge queue: queue it with dev.knotless.queuePull, as dev.knotless.mergePull refuses it. Absent is false.",
94
94
"type": "boolean"
95
95
},
96
96
"reason": {
97
97
"description": "Why it cannot merge now, in the words a merge would refuse it with.",
98
98
"type": "string"
99
99
},
100
100
"reviews": {
101
101
"description": "Where its reviews stand against what its target branch's rule asks of them (dev.knotless.repo#reviews): none when the rule asks nothing of them, or when it conflicts.",
102
102
"knownValues": [
103
103
"passed",
104
104
"blocked",
105
105
"none"
106
106
],
107
107
"type": "string"
108
108
},
109
109
"reviewsMissing": {
110
110
"description": "What its reviews lack, each as `knotless merge --check` lists it: `reviews 1 of 2`, `owners of web/: @alice or @bob`, `changes asked by @carol`.",
111
111
"items": {
112
112
"ref": "#note",
113
113
"type": "ref"
114
114
},
115
115
"type": "array"
116
116
},
117
117
"state": {
118
-
"description": "clean when it can merge now; conflicting when its head does not merge with its base; blocked when its checks have not all passed, or it is not reviewed as its target branch's rule asks.",
118
+
"description": "clean when it can merge now; conflicting when its head does not merge with its base; blocked when its checks have not all passed, or it is not reviewed as its target branch's rule asks; draft, whatever else holds, while its author has not marked it ready.",
119
119
"knownValues": [
120
120
"clean",
121
121
"conflicting",
122
-
"blocked"
122
+
"blocked",
123
+
"draft"
123
124
],
124
125
"type": "string"
125
126
}
126
127
},
127
128
"required": [
128
129
"state",
129
130
"checks",
130
131
"method",
131
132
"base",
132
133
"head",
133
134
"may"
134
135
],
135
136
"type": "object"
136
137
}
137
138
},
138
139
"parameters": {
139
140
"properties": {
140
141
"pull": {
141
142
"description": "The dev.knotless.pull record.",
142
143
"format": "at-uri",
143
144
"type": "string"
144
145
},
145
146
"repo": {
146
147
"description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
147
148
"format": "at-uri",
148
149
"type": "string"
149
150
}
150
151
},
151
152
"required": [
152
153
"repo",
153
154
"pull"
154
155
],
155
156
"type": "params"
156
157
},
157
158
"type": "query"
158
159
},
159
160
"note": {
160
161
"description": "A line of text about the pull's reviews.",
161
162
"properties": {
162
163
"text": {
163
164
"description": "In plain words.",
164
165
"type": "string"
165
166
}
166
167
},
167
168
"required": [
168
169
"text"
169
170
],
170
171
"type": "object"
171
172
},
172
173
"permissions": {
173
174
"description": "What the account asking may do to the pull.",
174
175
"properties": {
175
176
"base": {
176
177
"description": "Change its target branch: those who may close it.",
177
178
"type": "boolean"
178
179
},
179
180
"force": {
180
181
"description": "Merge it past its checks: the owner alone.",
181
182
"type": "boolean"
182
183
},
183
184
"head": {
184
185
"description": "Change its head branch: its author.",
185
186
"type": "boolean"
186
187
},
187
188
"merge": {
188
189
"description": "Merge it: the owner and collaborators.",
189
190
"type": "boolean"
190
191
},
191
192
"queue": {
192
193
"description": "Put it in the merge queue or take it out: those who may merge it, in a repository whose runners land a queue.",
193
194
"type": "boolean"
194
195
},
195
196
"rerun": {
196
197
"description": "Ask the runners to run its checks again: the owner, in a repository that names runners.",
197
198
"type": "boolean"
198
199
}
199
200
},
200
201
"required": [
201
202
"merge",
202
203
"force",
203
204
"queue",
204
205
"base",
205
206
"head",
206
207
"rerun"
207
208
],
208
209
"type": "object"
209
210
}
210
211
},
211
212
"description": "Whether an open pull can merge now, and what the account asking may do to it.",
212
213
"id": "dev.knotless.getMergeStatus",
213
214
"lexicon": 1
214
215
}