forges 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +72 -0
  3. package/dist/azure-devops/index.d.mts +2 -0
  4. package/dist/azure-devops/index.mjs +1 -0
  5. package/dist/azure-devops-DwQvL4TV.mjs +1355 -0
  6. package/dist/bitbucket/index.d.mts +2 -0
  7. package/dist/bitbucket/index.mjs +1 -0
  8. package/dist/bitbucket-CpcfJlYi.mjs +1171 -0
  9. package/dist/crypto-CQNEyYHD.mjs +156 -0
  10. package/dist/cursor-origin/index.d.mts +2 -0
  11. package/dist/cursor-origin/index.mjs +1 -0
  12. package/dist/cursor-origin-BhqYx2oW.mjs +980 -0
  13. package/dist/define-B2_4ob2i.d.mts +307 -0
  14. package/dist/define-D3yEXtKK.mjs +2276 -0
  15. package/dist/env.d.mts +46 -0
  16. package/dist/env.mjs +283 -0
  17. package/dist/fake/index.d.mts +227 -0
  18. package/dist/fake/index.mjs +1001 -0
  19. package/dist/fetch-D4pSRvvA.d.mts +1723 -0
  20. package/dist/forgejo/index.d.mts +2 -0
  21. package/dist/forgejo/index.mjs +1 -0
  22. package/dist/forgejo-BCefbHUN.mjs +2005 -0
  23. package/dist/gitea/index.d.mts +2 -0
  24. package/dist/gitea/index.mjs +22 -0
  25. package/dist/gitee/index.d.mts +2 -0
  26. package/dist/gitee/index.mjs +1 -0
  27. package/dist/gitee-CA-f7Rs8.mjs +1272 -0
  28. package/dist/github/index.d.mts +2 -0
  29. package/dist/github/index.mjs +1 -0
  30. package/dist/github-B0umL8_f.mjs +3259 -0
  31. package/dist/gitlab/index.d.mts +2 -0
  32. package/dist/gitlab/index.mjs +1 -0
  33. package/dist/gitlab-Bsr__Z0C.mjs +2378 -0
  34. package/dist/graphql-D7uGzZTf.mjs +366 -0
  35. package/dist/index-BQ6VS31s.d.mts +32 -0
  36. package/dist/index-C-jz9Mo3.d.mts +16 -0
  37. package/dist/index-C4fYzmK3.d.mts +102 -0
  38. package/dist/index-CQiIX4SH.d.mts +27 -0
  39. package/dist/index-CTj5gQzl.d.mts +35 -0
  40. package/dist/index-CliBWzOF.d.mts +23 -0
  41. package/dist/index-Cz_y-t3d.d.mts +36 -0
  42. package/dist/index-DEt25E1w.d.mts +77 -0
  43. package/dist/index-DIuS0EOy.d.mts +43 -0
  44. package/dist/index-uSpsMCrC.d.mts +26 -0
  45. package/dist/index.d.mts +41 -0
  46. package/dist/index.mjs +13 -0
  47. package/dist/kit.d.mts +183 -0
  48. package/dist/kit.mjs +4 -0
  49. package/dist/provider-CoZ7cCxp.d.mts +1439 -0
  50. package/dist/provider-Ed1YhkQN.mjs +169 -0
  51. package/dist/pushin/index.d.mts +2 -0
  52. package/dist/pushin/index.mjs +1 -0
  53. package/dist/pushin-CkxgJ2cU.mjs +343 -0
  54. package/dist/schema/Actor.json +96 -0
  55. package/dist/schema/AlertSupport.json +49 -0
  56. package/dist/schema/AuthKind.json +15 -0
  57. package/dist/schema/Branch.json +31 -0
  58. package/dist/schema/ChangedFile.json +58 -0
  59. package/dist/schema/Check.json +169 -0
  60. package/dist/schema/CheckRef.json +114 -0
  61. package/dist/schema/CheckState.json +14 -0
  62. package/dist/schema/ChecksSummary.json +34 -0
  63. package/dist/schema/CiJob.json +186 -0
  64. package/dist/schema/CiJobRef.json +132 -0
  65. package/dist/schema/CiRun.json +234 -0
  66. package/dist/schema/CiRunRef.json +103 -0
  67. package/dist/schema/CodeFragment.json +19 -0
  68. package/dist/schema/CodeMatch.json +128 -0
  69. package/dist/schema/Collaborator.json +169 -0
  70. package/dist/schema/Comment.json +336 -0
  71. package/dist/schema/CommentRef.json +158 -0
  72. package/dist/schema/Commit.json +307 -0
  73. package/dist/schema/CommitRef.json +104 -0
  74. package/dist/schema/CommitSignature.json +118 -0
  75. package/dist/schema/Comparison.json +355 -0
  76. package/dist/schema/Cursor.json +21 -0
  77. package/dist/schema/EventAction.json +33 -0
  78. package/dist/schema/EventDetail.json +649 -0
  79. package/dist/schema/EventKind.json +26 -0
  80. package/dist/schema/FileContent.json +73 -0
  81. package/dist/schema/FileStatus.json +15 -0
  82. package/dist/schema/ForgeCapabilities.json +737 -0
  83. package/dist/schema/ForgeEvent.json +789 -0
  84. package/dist/schema/ForgeInstance.json +7 -0
  85. package/dist/schema/ForgeKind.json +32 -0
  86. package/dist/schema/ForgeWarning.json +49 -0
  87. package/dist/schema/ForgeWarningCode.json +7 -0
  88. package/dist/schema/GetManyResult.json +699 -0
  89. package/dist/schema/Installation.json +131 -0
  90. package/dist/schema/InstallationToken.json +31 -0
  91. package/dist/schema/KnownForgeKind.json +19 -0
  92. package/dist/schema/Label.json +22 -0
  93. package/dist/schema/MergeMethod.json +14 -0
  94. package/dist/schema/Milestone.json +40 -0
  95. package/dist/schema/Notification.json +498 -0
  96. package/dist/schema/NotificationReason.json +28 -0
  97. package/dist/schema/NotificationRef.json +60 -0
  98. package/dist/schema/NotificationSubject.json +376 -0
  99. package/dist/schema/PerKind.json +49 -0
  100. package/dist/schema/PullBranches.json +125 -0
  101. package/dist/schema/PushCommit.json +24 -0
  102. package/dist/schema/Reaction.json +148 -0
  103. package/dist/schema/ReactionContent.json +17 -0
  104. package/dist/schema/ReactionSummary.json +70 -0
  105. package/dist/schema/Release.json +286 -0
  106. package/dist/schema/ReleaseAsset.json +169 -0
  107. package/dist/schema/ReleaseAssetRef.json +138 -0
  108. package/dist/schema/ReleaseRef.json +107 -0
  109. package/dist/schema/Repo.json +354 -0
  110. package/dist/schema/RepoFeatures.json +35 -0
  111. package/dist/schema/RepoPermissions.json +35 -0
  112. package/dist/schema/RepoRef.json +77 -0
  113. package/dist/schema/RepoRole.json +15 -0
  114. package/dist/schema/RepoVisibility.json +12 -0
  115. package/dist/schema/Review.json +371 -0
  116. package/dist/schema/ReviewComment.json +280 -0
  117. package/dist/schema/ReviewCommentInput.json +34 -0
  118. package/dist/schema/ReviewRef.json +158 -0
  119. package/dist/schema/ReviewState.json +15 -0
  120. package/dist/schema/Reviewer.json +133 -0
  121. package/dist/schema/SecurityAlert.json +219 -0
  122. package/dist/schema/SecurityAlertKind.json +14 -0
  123. package/dist/schema/SecurityAlertRef.json +122 -0
  124. package/dist/schema/SecuritySeverity.json +14 -0
  125. package/dist/schema/SourceKind.json +12 -0
  126. package/dist/schema/SubscriptionState.json +12 -0
  127. package/dist/schema/Support.json +23 -0
  128. package/dist/schema/Tag.json +25 -0
  129. package/dist/schema/TextLimits.json +18 -0
  130. package/dist/schema/Thread.json +653 -0
  131. package/dist/schema/ThreadKind.json +14 -0
  132. package/dist/schema/ThreadRef.json +131 -0
  133. package/dist/schema/ThreadStack.json +146 -0
  134. package/dist/schema/ThreadState.json +13 -0
  135. package/dist/schema/TreeEntry.json +46 -0
  136. package/dist/schema/TreeEntryType.json +13 -0
  137. package/dist/schema/UpsertCommentResult.json +355 -0
  138. package/dist/schema/User.json +123 -0
  139. package/dist/schema/Webhook.json +188 -0
  140. package/dist/schema/WebhookDeliveryRecord.json +173 -0
  141. package/dist/schema/WebhookDeliveryRef.json +135 -0
  142. package/dist/schema/WebhookRef.json +105 -0
  143. package/dist/schema/index.d.mts +4 -0
  144. package/dist/schema/index.mjs +3219 -0
  145. package/dist/tangled/index.d.mts +2 -0
  146. package/dist/tangled/index.mjs +1 -0
  147. package/dist/tangled-ChdPmiv-.mjs +1570 -0
  148. package/dist/testing/index.d.mts +123 -0
  149. package/dist/testing/index.mjs +242 -0
  150. package/dist/webhooks-rn9-8lxT.mjs +70 -0
  151. package/package.json +115 -3
  152. package/dist/.gitkeep +0 -0
@@ -0,0 +1,737 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "version": {
6
+ "type": "string",
7
+ "description": "Instance version the capabilities were computed for, when known."
8
+ },
9
+ "experimental": {
10
+ "type": "boolean",
11
+ "const": true,
12
+ "description": "The forge's API as a whole is unstable, so the provider can change with it."
13
+ },
14
+ "sources": {
15
+ "type": "object",
16
+ "properties": {
17
+ "poll": {
18
+ "$ref": "#/definitions/Support"
19
+ },
20
+ "webhook": {
21
+ "$ref": "#/definitions/Support"
22
+ },
23
+ "subscribe": {
24
+ "$ref": "#/definitions/Support"
25
+ }
26
+ },
27
+ "required": [
28
+ "poll",
29
+ "webhook",
30
+ "subscribe"
31
+ ],
32
+ "description": "`subscribe` is a long-lived push stream; see {@link SourcesApi}."
33
+ },
34
+ "repos": {
35
+ "type": "object",
36
+ "properties": {
37
+ "get": {
38
+ "$ref": "#/definitions/Support",
39
+ "description": "Support for `repos.get()`."
40
+ },
41
+ "list": {
42
+ "$ref": "#/definitions/Support",
43
+ "description": "Support for `repos.list()` and `repos.listPage()`."
44
+ },
45
+ "labels": {
46
+ "$ref": "#/definitions/Support",
47
+ "description": "Support for `repos.labels()` and `repos.labelsPage()`."
48
+ },
49
+ "createLabel": {
50
+ "$ref": "#/definitions/Support",
51
+ "description": "Support for `repos.createLabel()`."
52
+ },
53
+ "milestones": {
54
+ "$ref": "#/definitions/Support",
55
+ "description": "Support for `repos.milestones()` and `repos.milestonesPage()`."
56
+ },
57
+ "collaborators": {
58
+ "$ref": "#/definitions/Support",
59
+ "description": "Support for `repos.collaborators()` and `repos.collaboratorsPage()`."
60
+ },
61
+ "permissionFor": {
62
+ "$ref": "#/definitions/Support",
63
+ "description": "Support for `repos.permissionFor()`."
64
+ },
65
+ "addCollaborator": {
66
+ "$ref": "#/definitions/Support",
67
+ "description": "Support for `repos.addCollaborator()`."
68
+ },
69
+ "assignableUsers": {
70
+ "$ref": "#/definitions/Support",
71
+ "description": "Support for `repos.assignableUsers()` and `repos.assignableUsersPage()`."
72
+ },
73
+ "reviewerCandidates": {
74
+ "$ref": "#/definitions/Support",
75
+ "description": "Support for `repos.reviewerCandidates()` and `repos.reviewerCandidatesPage()`."
76
+ }
77
+ },
78
+ "required": [
79
+ "get",
80
+ "list",
81
+ "labels",
82
+ "createLabel",
83
+ "milestones",
84
+ "collaborators",
85
+ "permissionFor",
86
+ "addCollaborator",
87
+ "assignableUsers",
88
+ "reviewerCandidates"
89
+ ]
90
+ },
91
+ "users": {
92
+ "type": "object",
93
+ "properties": {
94
+ "get": {
95
+ "$ref": "#/definitions/Support",
96
+ "description": "Support for `users.get()`."
97
+ },
98
+ "me": {
99
+ "$ref": "#/definitions/Support",
100
+ "description": "Support for `users.me()`."
101
+ }
102
+ },
103
+ "required": [
104
+ "get",
105
+ "me"
106
+ ]
107
+ },
108
+ "threads": {
109
+ "type": "object",
110
+ "properties": {
111
+ "get": {
112
+ "$ref": "#/definitions/PerKind",
113
+ "description": "Support for `threads.get()`, per thread kind."
114
+ },
115
+ "list": {
116
+ "$ref": "#/definitions/PerKind",
117
+ "description": "Support for `threads.list()` and `threads.listPage()`, per thread kind."
118
+ },
119
+ "getMany": {
120
+ "$ref": "#/definitions/Support",
121
+ "description": "Support for `threads.getMany()`."
122
+ },
123
+ "events": {
124
+ "$ref": "#/definitions/PerKind",
125
+ "description": "Support for `threads.events()` and `threads.eventsPage()`, per thread kind."
126
+ }
127
+ },
128
+ "required": [
129
+ "get",
130
+ "list",
131
+ "getMany",
132
+ "events"
133
+ ]
134
+ },
135
+ "comments": {
136
+ "type": "object",
137
+ "properties": {
138
+ "list": {
139
+ "$ref": "#/definitions/PerKind",
140
+ "description": "Support for `threads.comments()` and `threads.commentsPage()`, per thread kind."
141
+ },
142
+ "edit": {
143
+ "$ref": "#/definitions/PerKind",
144
+ "description": "Support for `threads.editComment()`, per thread kind."
145
+ },
146
+ "delete": {
147
+ "$ref": "#/definitions/PerKind",
148
+ "description": "Support for `threads.deleteComment()`, per thread kind."
149
+ }
150
+ },
151
+ "required": [
152
+ "list",
153
+ "edit",
154
+ "delete"
155
+ ]
156
+ },
157
+ "reactions": {
158
+ "type": "object",
159
+ "properties": {
160
+ "list": {
161
+ "$ref": "#/definitions/PerKind",
162
+ "description": "Support for `threads.reactions()` and `threads.reactionsPage()`, per thread kind."
163
+ }
164
+ },
165
+ "required": [
166
+ "list"
167
+ ],
168
+ "description": "Listing the reactions on a thread or one of its comments, per thread kind."
169
+ },
170
+ "notifications": {
171
+ "type": "object",
172
+ "properties": {
173
+ "list": {
174
+ "$ref": "#/definitions/Support",
175
+ "description": "Support for `notifications.list()` and `notifications.listPage()`."
176
+ },
177
+ "markRead": {
178
+ "$ref": "#/definitions/Support",
179
+ "description": "Support for `notifications.markRead()`."
180
+ },
181
+ "markDone": {
182
+ "$ref": "#/definitions/Support",
183
+ "description": "Support for `notifications.markDone()`."
184
+ },
185
+ "unsubscribe": {
186
+ "$ref": "#/definitions/Support",
187
+ "description": "Support for `notifications.unsubscribe()`."
188
+ },
189
+ "markAllRead": {
190
+ "$ref": "#/definitions/Support",
191
+ "description": "Support for `notifications.markAllRead()`."
192
+ },
193
+ "markAllDone": {
194
+ "$ref": "#/definitions/Support",
195
+ "description": "Support for `notifications.markAllDone()`."
196
+ },
197
+ "unreadCount": {
198
+ "$ref": "#/definitions/Support",
199
+ "description": "Support for `notifications.unreadCount()`."
200
+ }
201
+ },
202
+ "required": [
203
+ "list",
204
+ "markRead",
205
+ "markDone",
206
+ "unsubscribe",
207
+ "markAllRead",
208
+ "markAllDone",
209
+ "unreadCount"
210
+ ]
211
+ },
212
+ "writes": {
213
+ "type": "object",
214
+ "properties": {
215
+ "comment": {
216
+ "$ref": "#/definitions/PerKind",
217
+ "description": "Support for `threads.comment()`, per thread kind."
218
+ },
219
+ "upsertComment": {
220
+ "$ref": "#/definitions/PerKind",
221
+ "description": "Composed from `comment`, `comments.list` and `comments.edit`, so `'emulated'` where it works at all, or `'unverified'` where a part is."
222
+ },
223
+ "close": {
224
+ "$ref": "#/definitions/PerKind",
225
+ "description": "Support for `threads.close()`, per thread kind."
226
+ },
227
+ "reopen": {
228
+ "$ref": "#/definitions/PerKind",
229
+ "description": "Support for `threads.reopen()`, per thread kind."
230
+ },
231
+ "create": {
232
+ "$ref": "#/definitions/PerKind",
233
+ "description": "Support for `threads.create()`, per thread kind."
234
+ },
235
+ "update": {
236
+ "$ref": "#/definitions/PerKind",
237
+ "description": "Support for `threads.update()`, per thread kind."
238
+ },
239
+ "setLabels": {
240
+ "$ref": "#/definitions/PerKind",
241
+ "description": "Support for `threads.setLabels()`, per thread kind."
242
+ },
243
+ "addLabels": {
244
+ "$ref": "#/definitions/PerKind",
245
+ "description": "Support for `threads.addLabels()`, per thread kind."
246
+ },
247
+ "removeLabels": {
248
+ "$ref": "#/definitions/PerKind",
249
+ "description": "Support for `threads.removeLabels()`, per thread kind."
250
+ },
251
+ "setMilestone": {
252
+ "$ref": "#/definitions/PerKind",
253
+ "description": "Support for `threads.setMilestone()`, per thread kind."
254
+ },
255
+ "react": {
256
+ "$ref": "#/definitions/PerKind",
257
+ "description": "Support for `threads.react()` and `threads.unreact()`, per thread kind."
258
+ },
259
+ "setAssignees": {
260
+ "$ref": "#/definitions/PerKind",
261
+ "description": "Support for `threads.setAssignees()`, per thread kind."
262
+ },
263
+ "requestReview": {
264
+ "$ref": "#/definitions/PerKind",
265
+ "description": "Support for `threads.requestReview()`, per thread kind."
266
+ },
267
+ "merge": {
268
+ "$ref": "#/definitions/Support",
269
+ "description": "Support for `threads.merge()`."
270
+ },
271
+ "approveAndMerge": {
272
+ "$ref": "#/definitions/Support",
273
+ "description": "Composed from `merge` and `reviews.approve`."
274
+ },
275
+ "transfer": {
276
+ "$ref": "#/definitions/Support",
277
+ "description": "Support for `threads.transfer()`."
278
+ },
279
+ "markDuplicate": {
280
+ "$ref": "#/definitions/Support",
281
+ "description": "Support for `threads.markDuplicate()`."
282
+ }
283
+ },
284
+ "required": [
285
+ "comment",
286
+ "upsertComment",
287
+ "close",
288
+ "reopen",
289
+ "create",
290
+ "update",
291
+ "setLabels",
292
+ "addLabels",
293
+ "removeLabels",
294
+ "setMilestone",
295
+ "react",
296
+ "setAssignees",
297
+ "requestReview",
298
+ "merge",
299
+ "approveAndMerge",
300
+ "transfer",
301
+ "markDuplicate"
302
+ ],
303
+ "description": "Write verbs, per thread kind except `merge`, `approveAndMerge`, `transfer` and `markDuplicate`."
304
+ },
305
+ "subscriptions": {
306
+ "type": "object",
307
+ "properties": {
308
+ "get": {
309
+ "$ref": "#/definitions/PerKind",
310
+ "description": "Support for `threads.subscription()`, per thread kind."
311
+ },
312
+ "set": {
313
+ "$ref": "#/definitions/PerKind",
314
+ "description": "Support for `threads.subscribe()` and `threads.unsubscribe()`, per thread kind."
315
+ }
316
+ },
317
+ "required": [
318
+ "get",
319
+ "set"
320
+ ],
321
+ "description": "Reading a thread subscription (`get`) and changing it (`set`), per kind. Distinct from notification unsubscribe."
322
+ },
323
+ "checks": {
324
+ "type": "object",
325
+ "properties": {
326
+ "thread": {
327
+ "$ref": "#/definitions/PerKind",
328
+ "description": "Support for `threads.checks()`, per thread kind."
329
+ },
330
+ "list": {
331
+ "$ref": "#/definitions/Support",
332
+ "description": "Support for `checks.list()`."
333
+ },
334
+ "report": {
335
+ "$ref": "#/definitions/Support",
336
+ "description": "Support for `checks.report()`."
337
+ },
338
+ "rerun": {
339
+ "$ref": "#/definitions/Support",
340
+ "description": "Support for `checks.rerun()`."
341
+ }
342
+ },
343
+ "required": [
344
+ "thread",
345
+ "list",
346
+ "report",
347
+ "rerun"
348
+ ],
349
+ "description": "`thread` covers `Thread.checks` and `threads.checks()` (pull requests only); the rest are the commit-level surface. `report` is a commit status unless the credential can write check runs."
350
+ },
351
+ "ci": {
352
+ "type": "object",
353
+ "properties": {
354
+ "runs": {
355
+ "$ref": "#/definitions/Support",
356
+ "description": "Support for `ci.runs()` and `ci.runsPage()`."
357
+ },
358
+ "run": {
359
+ "$ref": "#/definitions/Support",
360
+ "description": "Support for `ci.run()`."
361
+ },
362
+ "jobs": {
363
+ "$ref": "#/definitions/Support",
364
+ "description": "Support for `ci.jobs()` and `ci.jobsPage()`."
365
+ },
366
+ "log": {
367
+ "$ref": "#/definitions/Support",
368
+ "description": "Support for `ci.log()`."
369
+ }
370
+ },
371
+ "required": [
372
+ "runs",
373
+ "run",
374
+ "jobs",
375
+ "log"
376
+ ],
377
+ "description": "Read-only CI surface. `log` is `false` where job logs are not reachable over the API."
378
+ },
379
+ "reviews": {
380
+ "type": "object",
381
+ "properties": {
382
+ "list": {
383
+ "$ref": "#/definitions/Support",
384
+ "description": "Support for `threads.reviews()` and `threads.reviewsPage()`."
385
+ },
386
+ "create": {
387
+ "$ref": "#/definitions/Support",
388
+ "description": "Support for `threads.createReview()`."
389
+ },
390
+ "submit": {
391
+ "$ref": "#/definitions/Support",
392
+ "description": "Support for `threads.submitReview()`."
393
+ },
394
+ "approve": {
395
+ "$ref": "#/definitions/Support",
396
+ "description": "Support for `threads.approve()`."
397
+ },
398
+ "resolveThread": {
399
+ "$ref": "#/definitions/Support",
400
+ "description": "Support for `threads.resolveReviewThread()` and `threads.unresolveReviewThread()`."
401
+ }
402
+ },
403
+ "required": [
404
+ "list",
405
+ "create",
406
+ "submit",
407
+ "approve",
408
+ "resolveThread"
409
+ ],
410
+ "description": "Reviews on a pull request. `list` is `'emulated'` where reviews are synthesised from approvals or votes; `create` then covers only the events the forge's approval endpoint can express."
411
+ },
412
+ "contents": {
413
+ "type": "object",
414
+ "properties": {
415
+ "file": {
416
+ "$ref": "#/definitions/Support",
417
+ "description": "Support for `contents.file()`."
418
+ },
419
+ "tree": {
420
+ "$ref": "#/definitions/Support",
421
+ "description": "Support for `contents.tree()` and `contents.treePage()`."
422
+ },
423
+ "branches": {
424
+ "$ref": "#/definitions/Support",
425
+ "description": "Support for `contents.branches()` and `contents.branchesPage()`."
426
+ },
427
+ "tags": {
428
+ "$ref": "#/definitions/Support",
429
+ "description": "Support for `contents.tags()` and `contents.tagsPage()`."
430
+ },
431
+ "resolveRef": {
432
+ "$ref": "#/definitions/Support",
433
+ "description": "Support for `contents.resolveRef()`."
434
+ },
435
+ "commits": {
436
+ "$ref": "#/definitions/Support",
437
+ "description": "Support for `contents.commits()` and `contents.commitsPage()`."
438
+ },
439
+ "commit": {
440
+ "$ref": "#/definitions/Support",
441
+ "description": "Support for `contents.commit()`."
442
+ },
443
+ "compare": {
444
+ "$ref": "#/definitions/Support",
445
+ "description": "Support for `contents.compare()`."
446
+ },
447
+ "threadFiles": {
448
+ "$ref": "#/definitions/Support",
449
+ "description": "`threads.files` and `threads.commits` on a pull request."
450
+ },
451
+ "threadCommits": {
452
+ "$ref": "#/definitions/Support",
453
+ "description": "Support for `threads.commits()` and `threads.commitsPage()`."
454
+ }
455
+ },
456
+ "required": [
457
+ "file",
458
+ "tree",
459
+ "branches",
460
+ "tags",
461
+ "resolveRef",
462
+ "commits",
463
+ "commit",
464
+ "compare",
465
+ "threadFiles",
466
+ "threadCommits"
467
+ ],
468
+ "description": "Repository contents. `tree` is `'emulated'` where recursion is walked level by level rather than by the forge."
469
+ },
470
+ "webhooks": {
471
+ "type": "object",
472
+ "properties": {
473
+ "list": {
474
+ "$ref": "#/definitions/Support",
475
+ "description": "Support for `webhooks.list()` and `webhooks.listPage()`."
476
+ },
477
+ "create": {
478
+ "$ref": "#/definitions/Support",
479
+ "description": "Support for `webhooks.create()`."
480
+ },
481
+ "update": {
482
+ "$ref": "#/definitions/Support",
483
+ "description": "Support for `webhooks.update()`."
484
+ },
485
+ "delete": {
486
+ "$ref": "#/definitions/Support",
487
+ "description": "Support for `webhooks.delete()`."
488
+ },
489
+ "rotateSecret": {
490
+ "$ref": "#/definitions/Support",
491
+ "description": "Support for `webhooks.rotateSecret()`."
492
+ },
493
+ "deliveries": {
494
+ "$ref": "#/definitions/Support",
495
+ "description": "Support for `webhooks.deliveries()` and `webhooks.deliveriesPage()`."
496
+ },
497
+ "redeliver": {
498
+ "$ref": "#/definitions/Support",
499
+ "description": "Support for `webhooks.redeliver()`."
500
+ }
501
+ },
502
+ "required": [
503
+ "list",
504
+ "create",
505
+ "update",
506
+ "delete",
507
+ "rotateSecret",
508
+ "deliveries",
509
+ "redeliver"
510
+ ],
511
+ "description": "Managing registered webhooks, beside receiving deliveries."
512
+ },
513
+ "releases": {
514
+ "type": "object",
515
+ "properties": {
516
+ "list": {
517
+ "$ref": "#/definitions/Support",
518
+ "description": "Support for `releases.list()` and `releases.listPage()`."
519
+ },
520
+ "get": {
521
+ "$ref": "#/definitions/Support",
522
+ "description": "Support for `releases.get()`."
523
+ },
524
+ "latest": {
525
+ "$ref": "#/definitions/Support",
526
+ "description": "Support for `releases.latest()`."
527
+ },
528
+ "getByTag": {
529
+ "$ref": "#/definitions/Support",
530
+ "description": "Support for `releases.getByTag()`."
531
+ },
532
+ "downloadAsset": {
533
+ "$ref": "#/definitions/Support",
534
+ "description": "Support for `releases.downloadAsset()`."
535
+ },
536
+ "create": {
537
+ "$ref": "#/definitions/Support",
538
+ "description": "Support for `releases.create()`."
539
+ },
540
+ "update": {
541
+ "$ref": "#/definitions/Support",
542
+ "description": "Support for `releases.update()`."
543
+ }
544
+ },
545
+ "required": [
546
+ "list",
547
+ "get",
548
+ "latest",
549
+ "getByTag",
550
+ "downloadAsset",
551
+ "create",
552
+ "update"
553
+ ]
554
+ },
555
+ "search": {
556
+ "type": "object",
557
+ "properties": {
558
+ "threads": {
559
+ "$ref": "#/definitions/Support",
560
+ "description": "Support for `search.threads()` and `search.threadsPage()`."
561
+ },
562
+ "repos": {
563
+ "$ref": "#/definitions/Support",
564
+ "description": "Support for `search.repos()` and `search.reposPage()`."
565
+ },
566
+ "commits": {
567
+ "$ref": "#/definitions/Support",
568
+ "description": "Support for `search.commits()` and `search.commitsPage()`."
569
+ },
570
+ "code": {
571
+ "$ref": "#/definitions/Support",
572
+ "description": "Support for `search.code()` and `search.codePage()`."
573
+ }
574
+ },
575
+ "required": [
576
+ "threads",
577
+ "repos",
578
+ "commits",
579
+ "code"
580
+ ],
581
+ "description": "Cross-repository search of issues and pull requests, repositories, commits and code."
582
+ },
583
+ "securityAlerts": {
584
+ "$ref": "#/definitions/AlertSupport",
585
+ "description": "Per alert kind, since each needs its own token scope on GitHub."
586
+ },
587
+ "installations": {
588
+ "$ref": "#/definitions/Support",
589
+ "description": "Enumerating app installations and deriving one provider per installation."
590
+ },
591
+ "eventKinds": {
592
+ "type": "string",
593
+ "enum": [
594
+ "native",
595
+ "heuristic"
596
+ ],
597
+ "description": "`'heuristic'` when event kinds are inferred from free text (GitLab system notes) rather than reported by the forge, so `kind` may be `'other'` or wrong for unrecognised wording; `kindRaw` and `payload` stay exact."
598
+ },
599
+ "authKinds": {
600
+ "type": "array",
601
+ "items": {
602
+ "$ref": "#/definitions/AuthKind"
603
+ },
604
+ "description": "Auth types the provider accepts. The type this provider was created with is `ForgeProvider.authKind`."
605
+ },
606
+ "limits": {
607
+ "$ref": "#/definitions/TextLimits",
608
+ "description": "Maximum text lengths the forge accepts."
609
+ }
610
+ },
611
+ "required": [
612
+ "sources",
613
+ "repos",
614
+ "users",
615
+ "threads",
616
+ "comments",
617
+ "reactions",
618
+ "notifications",
619
+ "writes",
620
+ "subscriptions",
621
+ "checks",
622
+ "ci",
623
+ "reviews",
624
+ "contents",
625
+ "webhooks",
626
+ "releases",
627
+ "search",
628
+ "securityAlerts",
629
+ "installations",
630
+ "eventKinds",
631
+ "authKinds"
632
+ ],
633
+ "description": "What a provider supports, operation by operation. It is computed without a request, and `refreshCapabilities()` refines it with the instance version. Each group holds one entry per capability, and the [capability matrix](/reference/capability-matrix) lists them for every forge.",
634
+ "x-forges-type": "ForgeCapabilities",
635
+ "definitions": {
636
+ "AlertSupport": {
637
+ "type": "object",
638
+ "properties": {
639
+ "dependency": {
640
+ "$ref": "#/definitions/Support"
641
+ },
642
+ "code_scanning": {
643
+ "$ref": "#/definitions/Support"
644
+ },
645
+ "secret": {
646
+ "$ref": "#/definitions/Support"
647
+ },
648
+ "advisory": {
649
+ "$ref": "#/definitions/Support"
650
+ }
651
+ },
652
+ "required": [
653
+ "dependency",
654
+ "code_scanning",
655
+ "secret",
656
+ "advisory"
657
+ ],
658
+ "description": "Support per security alert kind.",
659
+ "x-forges-type": "AlertSupport"
660
+ },
661
+ "AuthKind": {
662
+ "type": "string",
663
+ "enum": [
664
+ "token",
665
+ "basic",
666
+ "app",
667
+ "app_password",
668
+ "oauth",
669
+ "anonymous"
670
+ ],
671
+ "description": "The credential types that a provider can accept.",
672
+ "x-forges-type": "AuthKind"
673
+ },
674
+ "PerKind": {
675
+ "type": "object",
676
+ "properties": {
677
+ "issue": {
678
+ "$ref": "#/definitions/Support"
679
+ },
680
+ "pull_request": {
681
+ "$ref": "#/definitions/Support"
682
+ },
683
+ "discussion": {
684
+ "$ref": "#/definitions/Support"
685
+ },
686
+ "commit": {
687
+ "$ref": "#/definitions/Support"
688
+ }
689
+ },
690
+ "required": [
691
+ "issue",
692
+ "pull_request",
693
+ "discussion",
694
+ "commit"
695
+ ],
696
+ "description": "Per-thread-kind support. `'other'` subjects have no verbs, so they have no entry.",
697
+ "x-forges-type": "PerKind"
698
+ },
699
+ "Support": {
700
+ "anyOf": [
701
+ {
702
+ "type": "boolean"
703
+ },
704
+ {
705
+ "type": "string",
706
+ "const": "emulated"
707
+ },
708
+ {
709
+ "type": "string",
710
+ "const": "experimental"
711
+ },
712
+ {
713
+ "type": "string",
714
+ "const": "unverified"
715
+ }
716
+ ],
717
+ "description": "Capability flag. Every value other than `false` means the operation is available:\n\n- `true`: native, and verified against the forge's responses.\n- `'experimental'`: native and verified, but built on an API the forge marks unstable, so it can change.\n- `'emulated'`: composed from other calls, so the result is approximate.\n- `'unverified'`: implemented, but not yet verified against the forge's responses, so it may not work.",
718
+ "x-forges-type": "Support"
719
+ },
720
+ "TextLimits": {
721
+ "type": "object",
722
+ "properties": {
723
+ "bodyLength": {
724
+ "type": "number"
725
+ },
726
+ "commentLength": {
727
+ "type": "number"
728
+ },
729
+ "labelLength": {
730
+ "type": "number"
731
+ }
732
+ },
733
+ "description": "Maximum lengths the forge accepts, in characters.",
734
+ "x-forges-type": "TextLimits"
735
+ }
736
+ }
737
+ }