@forge-dashboard/sdk-node 22.12.0 → 23.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.
@@ -3,7 +3,7 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export interface paths {
6
- "/api/auth/registration-status": {
6
+ "/api/v1/auth/registration-status": {
7
7
  parameters: {
8
8
  query?: never;
9
9
  header?: never;
@@ -28,7 +28,7 @@ export interface paths {
28
28
  patch?: never;
29
29
  trace?: never;
30
30
  };
31
- "/api/auth/register/begin": {
31
+ "/api/v1/auth/register/begin": {
32
32
  parameters: {
33
33
  query?: never;
34
34
  header?: never;
@@ -40,7 +40,7 @@ export interface paths {
40
40
  /**
41
41
  * Start a passkey registration ceremony
42
42
  * @description An instance has one user. The first registration on a fresh
43
- * instance (see GET /api/auth/registration-status) creates that
43
+ * instance (see GET /api/v1/auth/registration-status) creates that
44
44
  * user and the server names it, so the request carries no body. The
45
45
  * options require a resident key, so the passkey can be found at
46
46
  * sign-in without being named. Once any account holds a passkey, this
@@ -53,7 +53,7 @@ export interface paths {
53
53
  patch?: never;
54
54
  trace?: never;
55
55
  };
56
- "/api/auth/register/finish": {
56
+ "/api/v1/auth/register/finish": {
57
57
  parameters: {
58
58
  query?: never;
59
59
  header?: never;
@@ -70,7 +70,7 @@ export interface paths {
70
70
  patch?: never;
71
71
  trace?: never;
72
72
  };
73
- "/api/auth/login/begin": {
73
+ "/api/v1/auth/login/begin": {
74
74
  parameters: {
75
75
  query?: never;
76
76
  header?: never;
@@ -93,7 +93,7 @@ export interface paths {
93
93
  patch?: never;
94
94
  trace?: never;
95
95
  };
96
- "/api/auth/login/finish": {
96
+ "/api/v1/auth/login/finish": {
97
97
  parameters: {
98
98
  query?: never;
99
99
  header?: never;
@@ -110,7 +110,7 @@ export interface paths {
110
110
  patch?: never;
111
111
  trace?: never;
112
112
  };
113
- "/api/auth/logout": {
113
+ "/api/v1/auth/logout": {
114
114
  parameters: {
115
115
  query?: never;
116
116
  header?: never;
@@ -127,7 +127,7 @@ export interface paths {
127
127
  patch?: never;
128
128
  trace?: never;
129
129
  };
130
- "/api/auth/session": {
130
+ "/api/v1/auth/session": {
131
131
  parameters: {
132
132
  query?: never;
133
133
  header?: never;
@@ -144,7 +144,7 @@ export interface paths {
144
144
  patch?: never;
145
145
  trace?: never;
146
146
  };
147
- "/api/auth/credentials": {
147
+ "/api/v1/auth/credentials": {
148
148
  parameters: {
149
149
  query?: never;
150
150
  header?: never;
@@ -165,7 +165,7 @@ export interface paths {
165
165
  patch?: never;
166
166
  trace?: never;
167
167
  };
168
- "/api/auth/credentials/begin": {
168
+ "/api/v1/auth/credentials/begin": {
169
169
  parameters: {
170
170
  query?: never;
171
171
  header?: never;
@@ -176,7 +176,7 @@ export interface paths {
176
176
  put?: never;
177
177
  /**
178
178
  * Start a ceremony to add another passkey to the signed-in account
179
- * @description The authenticated counterpart to POST /api/auth/register/begin —
179
+ * @description The authenticated counterpart to POST /api/v1/auth/register/begin —
180
180
  * that one only ever works for a brand-new, credential-less
181
181
  * account; this is how an already-registered user adds a second
182
182
  * (or third...) passkey, e.g. a laptop and a security key. Like the
@@ -189,7 +189,7 @@ export interface paths {
189
189
  patch?: never;
190
190
  trace?: never;
191
191
  };
192
- "/api/auth/credentials/finish": {
192
+ "/api/v1/auth/credentials/finish": {
193
193
  parameters: {
194
194
  query?: never;
195
195
  header?: never;
@@ -206,7 +206,7 @@ export interface paths {
206
206
  patch?: never;
207
207
  trace?: never;
208
208
  };
209
- "/api/auth/credentials/{id}": {
209
+ "/api/v1/auth/credentials/{id}": {
210
210
  parameters: {
211
211
  query?: never;
212
212
  header?: never;
@@ -236,7 +236,7 @@ export interface paths {
236
236
  patch: operations["renameCredential"];
237
237
  trace?: never;
238
238
  };
239
- "/api/settings": {
239
+ "/api/v1/settings": {
240
240
  parameters: {
241
241
  query?: never;
242
242
  header?: never;
@@ -249,7 +249,7 @@ export interface paths {
249
249
  * webhook token and secret are returned, since the user pastes them
250
250
  * into the forge's webhook setup, and a first read creates them. For
251
251
  * a read that creates nothing and omits both, see
252
- * `GET /api/settings/summary`.
252
+ * `GET /api/v1/settings/summary`.
253
253
  */
254
254
  get: operations["getSettings"];
255
255
  /**
@@ -268,7 +268,7 @@ export interface paths {
268
268
  patch?: never;
269
269
  trace?: never;
270
270
  };
271
- "/api/settings/summary": {
271
+ "/api/v1/settings/summary": {
272
272
  parameters: {
273
273
  query?: never;
274
274
  header?: never;
@@ -277,7 +277,7 @@ export interface paths {
277
277
  };
278
278
  /**
279
279
  * The signed-in user's settings, read without side effects
280
- * @description The same data as `GET /api/settings`, minus the webhook token and
280
+ * @description The same data as `GET /api/v1/settings`, minus the webhook token and
281
281
  * secret, plus `webhookConfigured`. It never provisions webhook
282
282
  * credentials: for a user who has none yet it answers
283
283
  * `webhookConfigured: false` and creates nothing. Forge tokens are
@@ -293,7 +293,7 @@ export interface paths {
293
293
  patch?: never;
294
294
  trace?: never;
295
295
  };
296
- "/api/settings/theme": {
296
+ "/api/v1/settings/theme": {
297
297
  parameters: {
298
298
  query?: never;
299
299
  header?: never;
@@ -304,7 +304,7 @@ export interface paths {
304
304
  * The signed-in user's own saved theme preference
305
305
  * @description A lightweight, side-effect-free read of one field — theme — for
306
306
  * every page to check on load. Deliberately not
307
- * GET /api/settings itself: that handler also provisions webhook
307
+ * GET /api/v1/settings itself: that handler also provisions webhook
308
308
  * credentials on first call (EnsureWebhookCredentials), which
309
309
  * every page loading shouldn't trigger for a user who's never
310
310
  * opened Settings at all.
@@ -313,7 +313,7 @@ export interface paths {
313
313
  /**
314
314
  * Save the signed-in user's own theme preference
315
315
  * @description A dedicated, instant save — deliberately not routed
316
- * through the main PUT /api/settings, whose every other field is
316
+ * through the main PUT /api/v1/settings, whose every other field is
317
317
  * a plain replace rather than a per-field merge: a request
318
318
  * carrying only theme through that handler would blank every
319
319
  * other saved setting. Picking a theme applies immediately, the
@@ -329,7 +329,7 @@ export interface paths {
329
329
  patch?: never;
330
330
  trace?: never;
331
331
  };
332
- "/api/settings/timezone": {
332
+ "/api/v1/settings/timezone": {
333
333
  parameters: {
334
334
  query?: never;
335
335
  header?: never;
@@ -340,13 +340,13 @@ export interface paths {
340
340
  * The signed-in user's own saved time zone
341
341
  * @description A lightweight, side-effect-free read of one field, for every page to
342
342
  * check on load so it can show times in the user's zone. Deliberately
343
- * not GET /api/settings, for the reason GET /api/settings/theme isn't.
343
+ * not GET /api/v1/settings, for the reason GET /api/v1/settings/theme isn't.
344
344
  * Empty means "use the browser's own zone".
345
345
  */
346
346
  get: operations["getTimezone"];
347
347
  /**
348
348
  * Save the signed-in user's own time zone
349
- * @description A dedicated, instant save, not routed through PUT /api/settings,
349
+ * @description A dedicated, instant save, not routed through PUT /api/v1/settings,
350
350
  * which replaces every other field. Exists for browsers that report
351
351
  * UTC to every page, such as Firefox with fingerprint resistance.
352
352
  */
@@ -358,7 +358,7 @@ export interface paths {
358
358
  patch?: never;
359
359
  trace?: never;
360
360
  };
361
- "/api/settings/filter-state": {
361
+ "/api/v1/settings/filter-state": {
362
362
  parameters: {
363
363
  query?: never;
364
364
  header?: never;
@@ -368,7 +368,7 @@ export interface paths {
368
368
  /**
369
369
  * The signed-in user's own saved dashboard/Insights filter state
370
370
  * @description A lightweight read of one opaque blob, deliberately not
371
- * GET /api/settings itself for the same reason GET /api/settings/theme
371
+ * GET /api/v1/settings itself for the same reason GET /api/v1/settings/theme
372
372
  * isn't either: this loads on every dashboard/Insights visit and
373
373
  * shouldn't provision webhook credentials as a side effect.
374
374
  * `{}` for a user who's never saved any filters yet, not a 404.
@@ -379,7 +379,7 @@ export interface paths {
379
379
  /**
380
380
  * Save the signed-in user's own dashboard/Insights filter state
381
381
  * @description A dedicated, lightweight save separate from the main
382
- * PUT /api/settings — filters change on nearly every click, a
382
+ * PUT /api/v1/settings — filters change on nearly every click, a
383
383
  * mismatch for that endpoint's "always a full form submit"
384
384
  * convention. The body replaces the saved state entirely,
385
385
  * the same "always a full submit, just of a much smaller and
@@ -399,7 +399,7 @@ export interface paths {
399
399
  patch?: never;
400
400
  trace?: never;
401
401
  };
402
- "/api/tokens": {
402
+ "/api/v1/tokens": {
403
403
  parameters: {
404
404
  query?: never;
405
405
  header?: never;
@@ -420,7 +420,7 @@ export interface paths {
420
420
  patch?: never;
421
421
  trace?: never;
422
422
  };
423
- "/api/tokens/{id}": {
423
+ "/api/v1/tokens/{id}": {
424
424
  parameters: {
425
425
  query?: never;
426
426
  header?: never;
@@ -444,7 +444,7 @@ export interface paths {
444
444
  patch?: never;
445
445
  trace?: never;
446
446
  };
447
- "/api/webhooks/ensure": {
447
+ "/api/v1/webhooks/ensure": {
448
448
  parameters: {
449
449
  query?: never;
450
450
  header?: never;
@@ -458,7 +458,7 @@ export interface paths {
458
458
  * @description Creates a webhook on the named repo, pointed at the signed-in
459
459
  * user's own webhook URL and secret, subscribed to the events
460
460
  * docs/webhooks.md's manual steps recommend. If one already exists
461
- * there (found the same way GET /api/dashboard's own `hasWebhook`
461
+ * there (found the same way GET /api/v1/dashboard's own `hasWebhook`
462
462
  * does — matching by URL path, not object identity) it's brought
463
463
  * back to active with the right events instead of creating a
464
464
  * duplicate.
@@ -483,7 +483,7 @@ export interface paths {
483
483
  patch?: never;
484
484
  trace?: never;
485
485
  };
486
- "/api/repos/ignore": {
486
+ "/api/v1/repos/ignore": {
487
487
  parameters: {
488
488
  query?: never;
489
489
  header?: never;
@@ -495,7 +495,7 @@ export interface paths {
495
495
  /**
496
496
  * Hide one tracked repo's pull requests, issues, or both from the dashboard and Insights
497
497
  * @description Reversible, not destructive: the repo itself keeps
498
- * appearing in GET /api/dashboard's `repos` array with accurate
498
+ * appearing in GET /api/v1/dashboard's `repos` array with accurate
499
499
  * webhook-coverage status, and keeps being fetched and counted —
500
500
  * only the pullRequests and/or issues entries the request scopes
501
501
  * stop appearing there and on Insights. A repeat call
@@ -511,7 +511,7 @@ export interface paths {
511
511
  patch?: never;
512
512
  trace?: never;
513
513
  };
514
- "/api/repos/unignore": {
514
+ "/api/v1/repos/unignore": {
515
515
  parameters: {
516
516
  query?: never;
517
517
  header?: never;
@@ -522,7 +522,7 @@ export interface paths {
522
522
  put?: never;
523
523
  /**
524
524
  * Stop ignoring one tracked repo
525
- * @description The reverse of POST /api/repos/ignore. Idempotent: un-ignoring a
525
+ * @description The reverse of POST /api/v1/repos/ignore. Idempotent: un-ignoring a
526
526
  * repo that was never ignored is a no-op, not an error.
527
527
  */
528
528
  post: operations["unignoreRepo"];
@@ -532,7 +532,7 @@ export interface paths {
532
532
  patch?: never;
533
533
  trace?: never;
534
534
  };
535
- "/api/repos/auto-update-branch/enable": {
535
+ "/api/v1/repos/auto-update-branch/enable": {
536
536
  parameters: {
537
537
  query?: never;
538
538
  header?: never;
@@ -557,7 +557,7 @@ export interface paths {
557
557
  patch?: never;
558
558
  trace?: never;
559
559
  };
560
- "/api/repos/auto-update-branch/disable": {
560
+ "/api/v1/repos/auto-update-branch/disable": {
561
561
  parameters: {
562
562
  query?: never;
563
563
  header?: never;
@@ -568,7 +568,7 @@ export interface paths {
568
568
  put?: never;
569
569
  /**
570
570
  * Turn off automatic branch updates for one tracked repo
571
- * @description The reverse of POST /api/repos/auto-update-branch/enable.
571
+ * @description The reverse of POST /api/v1/repos/auto-update-branch/enable.
572
572
  * Idempotent: disabling a repo that was never enabled is a no-op,
573
573
  * not an error.
574
574
  */
@@ -579,7 +579,7 @@ export interface paths {
579
579
  patch?: never;
580
580
  trace?: never;
581
581
  };
582
- "/api/repos/rebase-bots/enable": {
582
+ "/api/v1/repos/rebase-bots/enable": {
583
583
  parameters: {
584
584
  query?: never;
585
585
  header?: never;
@@ -606,7 +606,7 @@ export interface paths {
606
606
  patch?: never;
607
607
  trace?: never;
608
608
  };
609
- "/api/repos/rebase-bots/disable": {
609
+ "/api/v1/repos/rebase-bots/disable": {
610
610
  parameters: {
611
611
  query?: never;
612
612
  header?: never;
@@ -617,7 +617,7 @@ export interface paths {
617
617
  put?: never;
618
618
  /**
619
619
  * Stop rebasing Dependabot and Renovate pull requests for one tracked repo
620
- * @description The reverse of POST /api/repos/rebase-bots/enable. Idempotent:
620
+ * @description The reverse of POST /api/v1/repos/rebase-bots/enable. Idempotent:
621
621
  * disabling a repo that was never enabled is a no-op, not an error.
622
622
  */
623
623
  post: operations["disableRebaseBots"];
@@ -627,7 +627,7 @@ export interface paths {
627
627
  patch?: never;
628
628
  trace?: never;
629
629
  };
630
- "/api/pull-requests/merge": {
630
+ "/api/v1/pull-requests/merge": {
631
631
  parameters: {
632
632
  query?: never;
633
633
  header?: never;
@@ -672,7 +672,7 @@ export interface paths {
672
672
  patch?: never;
673
673
  trace?: never;
674
674
  };
675
- "/api/pull-requests/auto-merge": {
675
+ "/api/v1/pull-requests/auto-merge": {
676
676
  parameters: {
677
677
  query?: never;
678
678
  header?: never;
@@ -727,7 +727,7 @@ export interface paths {
727
727
  patch?: never;
728
728
  trace?: never;
729
729
  };
730
- "/api/pull-requests/auto-merge/cancel": {
730
+ "/api/v1/pull-requests/auto-merge/cancel": {
731
731
  parameters: {
732
732
  query?: never;
733
733
  header?: never;
@@ -738,7 +738,7 @@ export interface paths {
738
738
  put?: never;
739
739
  /**
740
740
  * Cancel auto-merge on a pull request, on the signed-in user's behalf
741
- * @description Forgejo: removes the intent stored by `POST /api/pull-requests/auto-merge`,
741
+ * @description Forgejo: removes the intent stored by `POST /api/v1/pull-requests/auto-merge`,
742
742
  * so the background pass never merges the pull request. Nothing is sent
743
743
  * to the forge. Idempotent: a pull request with no intent is a 204 too.
744
744
  *
@@ -755,7 +755,7 @@ export interface paths {
755
755
  patch?: never;
756
756
  trace?: never;
757
757
  };
758
- "/api/pull-requests/close": {
758
+ "/api/v1/pull-requests/close": {
759
759
  parameters: {
760
760
  query?: never;
761
761
  header?: never;
@@ -786,7 +786,7 @@ export interface paths {
786
786
  patch?: never;
787
787
  trace?: never;
788
788
  };
789
- "/api/pull-requests/reopen": {
789
+ "/api/v1/pull-requests/reopen": {
790
790
  parameters: {
791
791
  query?: never;
792
792
  header?: never;
@@ -822,7 +822,7 @@ export interface paths {
822
822
  patch?: never;
823
823
  trace?: never;
824
824
  };
825
- "/api/pull-requests/rerun-checks": {
825
+ "/api/v1/pull-requests/rerun-checks": {
826
826
  parameters: {
827
827
  query?: never;
828
828
  header?: never;
@@ -883,7 +883,7 @@ export interface paths {
883
883
  patch?: never;
884
884
  trace?: never;
885
885
  };
886
- "/api/checks/cancel-run": {
886
+ "/api/v1/checks/cancel-run": {
887
887
  parameters: {
888
888
  query?: never;
889
889
  header?: never;
@@ -897,7 +897,7 @@ export interface paths {
897
897
  * @description Asks the forge to cancel a whole workflow run: every job of it stops,
898
898
  * because neither GitHub nor Forgejo can stop one job of a running
899
899
  * workflow. A client takes `runId` from a check in a `run` event on
900
- * GET /api/dashboard/stream, from a job that is still queued or running.
900
+ * GET /api/v1/dashboard/stream, from a job that is still queued or running.
901
901
  * A check with no `runId` (a third-party check, a legacy commit status,
902
902
  * an external CI) belongs to no Actions run and can't be cancelled
903
903
  * here.
@@ -930,7 +930,7 @@ export interface paths {
930
930
  patch?: never;
931
931
  trace?: never;
932
932
  };
933
- "/api/pull-requests/hide": {
933
+ "/api/v1/pull-requests/hide": {
934
934
  parameters: {
935
935
  query?: never;
936
936
  header?: never;
@@ -943,12 +943,12 @@ export interface paths {
943
943
  * Hide one pull request from the signed-in user's dashboard
944
944
  * @description Reversible, not destructive, like ignoring a repo: nothing is sent to
945
945
  * the forge. A hidden pull request leaves `pullRequests` in
946
- * GET /api/dashboard and everything counted from it, and is counted in
946
+ * GET /api/v1/dashboard and everything counted from it, and is counted in
947
947
  * `hiddenPullRequests` instead. It stays listed for
948
948
  * `includeHidden=true`, marked `hidden`, so a client can offer a Restore.
949
949
  *
950
950
  * With `days`, the hide ends by itself that many days from now. Without
951
- * it the pull request stays hidden until `POST /api/pull-requests/unhide`.
951
+ * it the pull request stays hidden until `POST /api/v1/pull-requests/unhide`.
952
952
  * A repeat call replaces the earlier choice (hide until restored, then
953
953
  * hide for 7 days, ends with the 7 days). The server forgets the record
954
954
  * once the pull request is no longer open, so the list never grows
@@ -962,7 +962,7 @@ export interface paths {
962
962
  patch?: never;
963
963
  trace?: never;
964
964
  };
965
- "/api/pull-requests/auto-update": {
965
+ "/api/v1/pull-requests/auto-update": {
966
966
  parameters: {
967
967
  query?: never;
968
968
  header?: never;
@@ -975,13 +975,13 @@ export interface paths {
975
975
  * Turn the automatic branch update on or off for one pull request
976
976
  * @description A pure local write: nothing is sent to the forge. The choice is kept
977
977
  * only while it differs from the repo's auto-update setting
978
- * (`/api/repos/auto-update-branch/enable`), so a choice that matches
978
+ * (`/api/v1/repos/auto-update-branch/enable`), so a choice that matches
979
979
  * the repo is dropped and the pull request follows the repo again, and
980
980
  * a later change to the repo's setting reaches it. With `enabled`
981
981
  * `null` or absent the pull request goes back to its repo's setting.
982
982
  * Idempotent. A draft and a release-please pull request are never
983
983
  * updated automatically, whatever is chosen: `autoUpdate.unavailable`
984
- * in GET /api/dashboard says so. The server forgets the choice once
984
+ * in GET /api/v1/dashboard says so. The server forgets the choice once
985
985
  * the pull request is no longer open, its repo is no longer tracked, or
986
986
  * the repo's setting changes to match it. A pull request the dashboard
987
987
  * doesn't hold is a 404.
@@ -993,7 +993,7 @@ export interface paths {
993
993
  patch?: never;
994
994
  trace?: never;
995
995
  };
996
- "/api/pull-requests/unhide": {
996
+ "/api/v1/pull-requests/unhide": {
997
997
  parameters: {
998
998
  query?: never;
999
999
  header?: never;
@@ -1004,7 +1004,7 @@ export interface paths {
1004
1004
  put?: never;
1005
1005
  /**
1006
1006
  * Bring a hidden pull request back onto the signed-in user's dashboard
1007
- * @description The reverse of POST /api/pull-requests/hide. Idempotent: restoring a
1007
+ * @description The reverse of POST /api/v1/pull-requests/hide. Idempotent: restoring a
1008
1008
  * pull request that isn't hidden is a 204 too.
1009
1009
  */
1010
1010
  post: operations["unhidePullRequest"];
@@ -1014,7 +1014,7 @@ export interface paths {
1014
1014
  patch?: never;
1015
1015
  trace?: never;
1016
1016
  };
1017
- "/api/pull-requests/update-branch": {
1017
+ "/api/v1/pull-requests/update-branch": {
1018
1018
  parameters: {
1019
1019
  query?: never;
1020
1020
  header?: never;
@@ -1046,7 +1046,7 @@ export interface paths {
1046
1046
  patch?: never;
1047
1047
  trace?: never;
1048
1048
  };
1049
- "/api/pull-requests/dependabot-action": {
1049
+ "/api/v1/pull-requests/dependabot-action": {
1050
1050
  parameters: {
1051
1051
  query?: never;
1052
1052
  header?: never;
@@ -1078,7 +1078,7 @@ export interface paths {
1078
1078
  patch?: never;
1079
1079
  trace?: never;
1080
1080
  };
1081
- "/api/pull-requests/renovate-rebase": {
1081
+ "/api/v1/pull-requests/renovate-rebase": {
1082
1082
  parameters: {
1083
1083
  query?: never;
1084
1084
  header?: never;
@@ -1116,7 +1116,7 @@ export interface paths {
1116
1116
  patch?: never;
1117
1117
  trace?: never;
1118
1118
  };
1119
- "/api/pull-requests/renovate-rebase/cancel": {
1119
+ "/api/v1/pull-requests/renovate-rebase/cancel": {
1120
1120
  parameters: {
1121
1121
  query?: never;
1122
1122
  header?: never;
@@ -1147,7 +1147,7 @@ export interface paths {
1147
1147
  patch?: never;
1148
1148
  trace?: never;
1149
1149
  };
1150
- "/api/pull-requests/details": {
1150
+ "/api/v1/pull-requests/details": {
1151
1151
  parameters: {
1152
1152
  query?: never;
1153
1153
  header?: never;
@@ -1160,7 +1160,7 @@ export interface paths {
1160
1160
  * conversation in order, the thumbs up and thumbs down reactions on each
1161
1161
  * with who gave them, and, for a release pull request, the release
1162
1162
  * notes. Fetched live on every call, never as part of GET
1163
- * /api/dashboard's snapshot: comments and reactions for every row would
1163
+ * /api/v1/dashboard's snapshot: comments and reactions for every row would
1164
1164
  * spend the forge's budget on rows nobody opens.
1165
1165
  *
1166
1166
  * GitHub answers with one GraphQL query. Forgejo costs one call for the
@@ -1180,7 +1180,7 @@ export interface paths {
1180
1180
  * the browser loads it directly. A future policy's `img-src` has to
1181
1181
  * allow avatars.githubusercontent.com, repository-images.githubusercontent.com
1182
1182
  * (a GitHub repository's logo, see `logoUrl` on a repo in GET
1183
- * /api/dashboard) and the Forgejo host.
1183
+ * /api/v1/dashboard) and the Forgejo host.
1184
1184
  *
1185
1185
  * A forge that can't be read is an error, never an empty thread.
1186
1186
  */
@@ -1193,7 +1193,7 @@ export interface paths {
1193
1193
  patch?: never;
1194
1194
  trace?: never;
1195
1195
  };
1196
- "/api/issues/details": {
1196
+ "/api/v1/issues/details": {
1197
1197
  parameters: {
1198
1198
  query?: never;
1199
1199
  header?: never;
@@ -1204,9 +1204,9 @@ export interface paths {
1204
1204
  * Read an issue's description, comments and reactions, on demand
1205
1205
  * @description What the issue dialog shows: the description, the conversation in
1206
1206
  * order, and the thumbs up and thumbs down reactions on each with who
1207
- * gave them. The same shape and rules as GET /api/pull-requests/details
1207
+ * gave them. The same shape and rules as GET /api/v1/pull-requests/details
1208
1208
  * without the release notes, which only a pull request has. Fetched live
1209
- * on every call, never as part of GET /api/dashboard's snapshot.
1209
+ * on every call, never as part of GET /api/v1/dashboard's snapshot.
1210
1210
  *
1211
1211
  * GitHub answers with one GraphQL query. Forgejo costs one call for the
1212
1212
  * issue, one for its comments, one for the description's reactions and
@@ -1222,7 +1222,7 @@ export interface paths {
1222
1222
  * number. An avatar is the forge's own URL, passed through unchanged and
1223
1223
  * never proxied.
1224
1224
  *
1225
- * The error answers are those of GET /api/pull-requests/details, with
1225
+ * The error answers are those of GET /api/v1/pull-requests/details, with
1226
1226
  * the same codes. An issue that doesn't exist is a 404, and a forge that
1227
1227
  * can't be read is an error, never an empty thread.
1228
1228
  */
@@ -1235,7 +1235,7 @@ export interface paths {
1235
1235
  patch?: never;
1236
1236
  trace?: never;
1237
1237
  };
1238
- "/api/issues/close": {
1238
+ "/api/v1/issues/close": {
1239
1239
  parameters: {
1240
1240
  query?: never;
1241
1241
  header?: never;
@@ -1247,7 +1247,7 @@ export interface paths {
1247
1247
  /**
1248
1248
  * Close one issue, on the signed-in user's behalf
1249
1249
  * @description Closes the named issue. The Issues page's dialog offers it, on its own
1250
- * or after posting a comment with `POST /api/issues/comment`. Closing an
1250
+ * or after posting a comment with `POST /api/v1/issues/comment`. Closing an
1251
1251
  * issue that is already closed is not refused: both forges treat it as
1252
1252
  * done, so the call succeeds and there is no `already_closed` answer.
1253
1253
  *
@@ -1270,7 +1270,7 @@ export interface paths {
1270
1270
  patch?: never;
1271
1271
  trace?: never;
1272
1272
  };
1273
- "/api/issues/reopen": {
1273
+ "/api/v1/issues/reopen": {
1274
1274
  parameters: {
1275
1275
  query?: never;
1276
1276
  header?: never;
@@ -1300,7 +1300,7 @@ export interface paths {
1300
1300
  patch?: never;
1301
1301
  trace?: never;
1302
1302
  };
1303
- "/api/issues/comment": {
1303
+ "/api/v1/issues/comment": {
1304
1304
  parameters: {
1305
1305
  query?: never;
1306
1306
  header?: never;
@@ -1333,7 +1333,7 @@ export interface paths {
1333
1333
  patch?: never;
1334
1334
  trace?: never;
1335
1335
  };
1336
- "/api/releases/details": {
1336
+ "/api/v1/releases/details": {
1337
1337
  parameters: {
1338
1338
  query?: never;
1339
1339
  header?: never;
@@ -1345,7 +1345,7 @@ export interface paths {
1345
1345
  * @description What the release dialog on the Main branches page shows for a
1346
1346
  * repository's latest published release: its title, when it was
1347
1347
  * published, its notes and the thumbs reactions on them. Fetched live on
1348
- * every call, never as part of GET /api/main-branches' snapshot, so a
1348
+ * every call, never as part of GET /api/v1/main-branches' snapshot, so a
1349
1349
  * release nobody opens costs no budget.
1350
1350
  *
1351
1351
  * GitHub answers with one GraphQL query. Only GitHub rows carry a latest
@@ -1357,7 +1357,7 @@ export interface paths {
1357
1357
  * 20,000 characters (`truncated`), and a reaction names at most its
1358
1358
  * first 10 people while `count` is the full number.
1359
1359
  *
1360
- * The error answers are those of GET /api/pull-requests/details, with
1360
+ * The error answers are those of GET /api/v1/pull-requests/details, with
1361
1361
  * the same codes. A tag that has no published release is a 404, and so is a draft,
1362
1362
  * a pre-release or a release with no publish date.
1363
1363
  */
@@ -1370,7 +1370,7 @@ export interface paths {
1370
1370
  patch?: never;
1371
1371
  trace?: never;
1372
1372
  };
1373
- "/api/queued-actions": {
1373
+ "/api/v1/queued-actions": {
1374
1374
  parameters: {
1375
1375
  query?: never;
1376
1376
  header?: never;
@@ -1383,7 +1383,7 @@ export interface paths {
1383
1383
  * resets, oldest first: the ones still `queued`, and the
1384
1384
  * final ones (`done`, `skipped`, `failed`) kept for 24 hours so a
1385
1385
  * client can show the outcome in its Activity list. The same list
1386
- * rides along on GET /api/dashboard as `queuedActions`.
1386
+ * rides along on GET /api/v1/dashboard as `queuedActions`.
1387
1387
  */
1388
1388
  get: operations["listQueuedActions"];
1389
1389
  put?: never;
@@ -1418,7 +1418,7 @@ export interface paths {
1418
1418
  patch?: never;
1419
1419
  trace?: never;
1420
1420
  };
1421
- "/api/queued-actions/{id}": {
1421
+ "/api/v1/queued-actions/{id}": {
1422
1422
  parameters: {
1423
1423
  query?: never;
1424
1424
  header?: never;
@@ -1529,7 +1529,7 @@ export interface paths {
1529
1529
  patch?: never;
1530
1530
  trace?: never;
1531
1531
  };
1532
- "/api/dashboard": {
1532
+ "/api/v1/dashboard": {
1533
1533
  parameters: {
1534
1534
  query?: never;
1535
1535
  header?: never;
@@ -1558,7 +1558,7 @@ export interface paths {
1558
1558
  patch?: never;
1559
1559
  trace?: never;
1560
1560
  };
1561
- "/api/dashboard/stream": {
1561
+ "/api/v1/dashboard/stream": {
1562
1562
  parameters: {
1563
1563
  query?: never;
1564
1564
  header?: never;
@@ -1573,7 +1573,7 @@ export interface paths {
1573
1573
  * one, which is what turns that into a live update instead of
1574
1574
  * something only the next scheduled refresh picks up.
1575
1575
  *
1576
- * The frontend's own 30-second poll against GET /api/dashboard
1576
+ * The frontend's own 30-second poll against GET /api/v1/dashboard
1577
1577
  * keeps running unconditionally, connected or not — a browser or
1578
1578
  * proxy that can't hold an SSE connection open just never
1579
1579
  * benefits from this, rather than the dashboard going stale
@@ -1585,7 +1585,7 @@ export interface paths {
1585
1585
  *
1586
1586
  * A client that passes `sid` can also follow the job lists of the
1587
1587
  * pull requests and default branches it has open, through
1588
- * `POST /api/dashboard/stream/watch`. Each list arrives as named
1588
+ * `POST /api/v1/dashboard/stream/watch`. Each list arrives as named
1589
1589
  * `run` events on this stream, one for each workflow run attempt, so a
1590
1590
  * client that only listens for default messages never sees one. A
1591
1591
  * reconnect reuses the same `sid` with nothing watched, so the client
@@ -1600,7 +1600,7 @@ export interface paths {
1600
1600
  patch?: never;
1601
1601
  trace?: never;
1602
1602
  };
1603
- "/api/dashboard/stream/watch": {
1603
+ "/api/v1/dashboard/stream/watch": {
1604
1604
  parameters: {
1605
1605
  query?: never;
1606
1606
  header?: never;
@@ -1634,7 +1634,7 @@ export interface paths {
1634
1634
  patch?: never;
1635
1635
  trace?: never;
1636
1636
  };
1637
- "/api/presence": {
1637
+ "/api/v1/presence": {
1638
1638
  parameters: {
1639
1639
  query?: never;
1640
1640
  header?: never;
@@ -1675,7 +1675,7 @@ export interface paths {
1675
1675
  patch?: never;
1676
1676
  trace?: never;
1677
1677
  };
1678
- "/api/dashboard/refresh": {
1678
+ "/api/v1/dashboard/refresh": {
1679
1679
  parameters: {
1680
1680
  query?: never;
1681
1681
  header?: never;
@@ -1713,7 +1713,7 @@ export interface paths {
1713
1713
  patch?: never;
1714
1714
  trace?: never;
1715
1715
  };
1716
- "/api/main-branches": {
1716
+ "/api/v1/main-branches": {
1717
1717
  parameters: {
1718
1718
  query?: never;
1719
1719
  header?: never;
@@ -1743,7 +1743,7 @@ export interface paths {
1743
1743
  *
1744
1744
  * A forge that can't be reached keeps its last known rows, each marked
1745
1745
  * `staleSince`, the same carry-over `forges[].staleSince`
1746
- * on GET /api/dashboard reports. A forge whose rate-limit budget is
1746
+ * on GET /api/v1/dashboard reports. A forge whose rate-limit budget is
1747
1747
  * spent is skipped until it resets and its rows are kept the same way.
1748
1748
  * Only the signed-in user's own repositories.
1749
1749
  *
@@ -1760,7 +1760,7 @@ export interface paths {
1760
1760
  patch?: never;
1761
1761
  trace?: never;
1762
1762
  };
1763
- "/api/checks/log": {
1763
+ "/api/v1/checks/log": {
1764
1764
  parameters: {
1765
1765
  query?: never;
1766
1766
  header?: never;
@@ -1807,7 +1807,7 @@ export interface paths {
1807
1807
  patch?: never;
1808
1808
  trace?: never;
1809
1809
  };
1810
- "/api/main-branches/advisories": {
1810
+ "/api/v1/main-branches/advisories": {
1811
1811
  parameters: {
1812
1812
  query?: never;
1813
1813
  header?: never;
@@ -1820,7 +1820,7 @@ export interface paths {
1820
1820
  * repository: each open Dependabot alert with the fields GitHub's own
1821
1821
  * alert page shows. The list and the detail view are the same answer, so
1822
1822
  * opening one advisory costs no second call. Fetched live on every call,
1823
- * never as part of GET /api/main-branches' snapshot, so a repository
1823
+ * never as part of GET /api/v1/main-branches' snapshot, so a repository
1824
1824
  * nobody opens costs no budget.
1825
1825
  *
1826
1826
  * Sorted by severity, highest first, then newest first. GitHub reads them
@@ -1857,7 +1857,7 @@ export interface paths {
1857
1857
  patch?: never;
1858
1858
  trace?: never;
1859
1859
  };
1860
- "/api/main-branches/rerun-checks": {
1860
+ "/api/v1/main-branches/rerun-checks": {
1861
1861
  parameters: {
1862
1862
  query?: never;
1863
1863
  header?: never;
@@ -1868,7 +1868,7 @@ export interface paths {
1868
1868
  put?: never;
1869
1869
  /**
1870
1870
  * Rerun only the failed jobs of a repository's default-branch pipeline, on the signed-in user's behalf
1871
- * @description The branch twin of POST /api/pull-requests/rerun-checks. Asks the forge
1871
+ * @description The branch twin of POST /api/v1/pull-requests/rerun-checks. Asks the forge
1872
1872
  * to rerun the failed jobs of the Actions workflow runs on the commit
1873
1873
  * the branch's job list shows, and nothing that passed. It
1874
1874
  * answers once the forge has queued them, not when they finish, so a
@@ -1891,7 +1891,7 @@ export interface paths {
1891
1891
  patch?: never;
1892
1892
  trace?: never;
1893
1893
  };
1894
- "/api/stats/forge-api": {
1894
+ "/api/v1/stats/forge-api": {
1895
1895
  parameters: {
1896
1896
  query?: never;
1897
1897
  header?: never;
@@ -1930,7 +1930,7 @@ export interface paths {
1930
1930
  * the caller has saved, and a GitHub App installation id is a number the
1931
1931
  * caller types in, so until the dashboard has one user, someone who saves
1932
1932
  * another account's installation id sees that installation's counts. `budgets` are the rate limits each forge last
1933
- * reported, the same figures as `forges` on GET /api/dashboard.
1933
+ * reported, the same figures as `forges` on GET /api/v1/dashboard.
1934
1934
  */
1935
1935
  get: operations["getForgeApiStats"];
1936
1936
  put?: never;
@@ -2013,6 +2013,12 @@ export interface components {
2013
2013
  threads?: number;
2014
2014
  };
2015
2015
  Version: {
2016
+ /**
2017
+ * @description The API's current major version, such as v1: the path segment
2018
+ * the versioned operations live under. It is one value, not a list.
2019
+ * @example v1
2020
+ */
2021
+ apiVersion: string;
2016
2022
  /**
2017
2023
  * @description The release tag this binary was built from, with no leading
2018
2024
  * "v" — or "dev" for a build outside the release pipeline.
@@ -2231,21 +2237,21 @@ export interface components {
2231
2237
  * means "system" — follow the browser's prefers-color-scheme
2232
2238
  * rather than a saved choice. Set only from Settings; every
2233
2239
  * other page reads it via the lightweight
2234
- * GET /api/settings/theme instead of this endpoint.
2240
+ * GET /api/v1/settings/theme instead of this endpoint.
2235
2241
  * @enum {string}
2236
2242
  */
2237
2243
  theme: "" | "light" | "dark";
2238
2244
  /**
2239
2245
  * @description The signed-in user's own time zone as an IANA name such as
2240
2246
  * `Europe/Amsterdam`. Empty means the browser's own zone. Set only
2241
- * from Settings (PUT /api/settings/timezone); every other page reads
2242
- * it via GET /api/settings/timezone.
2247
+ * from Settings (PUT /api/v1/settings/timezone); every other page reads
2248
+ * it via GET /api/v1/settings/timezone.
2243
2249
  */
2244
2250
  timezone?: string;
2245
2251
  /**
2246
2252
  * @description Whether the user hides the bot-kept "Dependency Dashboard" issue
2247
2253
  * everywhere: the server leaves a `housekeeping` issue out of the
2248
- * `issues` of GET /api/dashboard and its stream, and out of every
2254
+ * `issues` of GET /api/v1/dashboard and its stream, and out of every
2249
2255
  * count and total built from them (`navCounts`, Insights). Always
2250
2256
  * present once the server applies it.
2251
2257
  */
@@ -2275,7 +2281,7 @@ export interface components {
2275
2281
  ignoredTitleCounts: (number | null)[];
2276
2282
  };
2277
2283
  /**
2278
- * @description The signed-in user's settings as `GET /api/settings/summary` and the
2284
+ * @description The signed-in user's settings as `GET /api/v1/settings/summary` and the
2279
2285
  * `get_settings` MCP tool return them: every field of
2280
2286
  * SettingsResponse except `webhookToken` and `webhookSecret`, which are
2281
2287
  * never part of it, plus `webhookConfigured`. No forge token appears,
@@ -2294,7 +2300,7 @@ export interface components {
2294
2300
  /**
2295
2301
  * @description Whether this user's webhook token and secret exist. They are
2296
2302
  * created the first time the Settings page reads
2297
- * `GET /api/settings`, never by this read, so this is false for a
2303
+ * `GET /api/v1/settings`, never by this read, so this is false for a
2298
2304
  * user who has not opened Settings yet.
2299
2305
  */
2300
2306
  webhookConfigured: boolean;
@@ -2317,7 +2323,7 @@ export interface components {
2317
2323
  * 0 or omitted really does disconnect the App. Rejected (400) if
2318
2324
  * the server has no GitHub App configured (see
2319
2325
  * SettingsResponse.githubAppConfigured). Theme isn't settable
2320
- * here at all — see PUT /api/settings/theme.
2326
+ * here at all — see PUT /api/v1/settings/theme.
2321
2327
  */
2322
2328
  SettingsRequest: {
2323
2329
  githubToken?: string;
@@ -2367,17 +2373,17 @@ export interface components {
2367
2373
  */
2368
2374
  ignoredTitles?: string[];
2369
2375
  };
2370
- /** @description See GET /api/settings/theme's own description. */
2376
+ /** @description See GET /api/v1/settings/theme's own description. */
2371
2377
  ThemeResponse: {
2372
2378
  /** @enum {string} */
2373
2379
  theme: "" | "light" | "dark";
2374
2380
  };
2375
- /** @description See PUT /api/settings/theme's own description. */
2381
+ /** @description See PUT /api/v1/settings/theme's own description. */
2376
2382
  ThemeRequest: {
2377
2383
  /** @enum {string} */
2378
2384
  theme: "" | "light" | "dark";
2379
2385
  };
2380
- /** @description See GET /api/settings/timezone's own description. */
2386
+ /** @description See GET /api/v1/settings/timezone's own description. */
2381
2387
  TimezoneResponse: {
2382
2388
  /**
2383
2389
  * @description An IANA zone name such as `Europe/Amsterdam`, or empty for the browser's own.
@@ -2385,7 +2391,7 @@ export interface components {
2385
2391
  */
2386
2392
  timezone: string;
2387
2393
  };
2388
- /** @description See PUT /api/settings/timezone's own description. */
2394
+ /** @description See PUT /api/v1/settings/timezone's own description. */
2389
2395
  TimezoneRequest: {
2390
2396
  /** @description An IANA zone name, or empty for the browser's own. `Local` is refused. */
2391
2397
  timezone: string;
@@ -2399,7 +2405,7 @@ export interface components {
2399
2405
  Credential: {
2400
2406
  /** @description This passkey's own credential ID (base64url), distinct from the account's user ID. */
2401
2407
  id: string;
2402
- /** @description The passkey's name, given at registration and changeable with `PATCH /api/auth/credentials/{id}`. Empty when it was never named; clients then fall back to `createdAt`. */
2408
+ /** @description The passkey's name, given at registration and changeable with `PATCH /api/v1/auth/credentials/{id}`. Empty when it was never named; clients then fall back to `createdAt`. */
2403
2409
  label: string;
2404
2410
  /** Format: date-time */
2405
2411
  createdAt: string;
@@ -2464,18 +2470,18 @@ export interface components {
2464
2470
  /** @description Which repo to create or fix up a webhook on. */
2465
2471
  WebhookEnsureRequest: {
2466
2472
  forge: components["schemas"]["Forge"];
2467
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
2473
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
2468
2474
  fullName: string;
2469
2475
  };
2470
2476
  /**
2471
2477
  * @description Which repo to ignore, and in which scope(s). At least one
2472
2478
  * of prs/issues must be true — a request with both false is
2473
2479
  * rejected with 400 rather than silently doing nothing; use POST
2474
- * /api/repos/unignore to clear both at once instead.
2480
+ * /api/v1/repos/unignore to clear both at once instead.
2475
2481
  */
2476
2482
  RepoIgnoreRequest: {
2477
2483
  forge: components["schemas"]["Forge"];
2478
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
2484
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
2479
2485
  fullName: string;
2480
2486
  /** @description Whether to ignore this repo's pull requests. */
2481
2487
  prs: boolean;
@@ -2526,9 +2532,9 @@ export interface components {
2526
2532
  /** @description Which pull request to act on. */
2527
2533
  PullRequestActionRequest: {
2528
2534
  forge: components["schemas"]["Forge"];
2529
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
2535
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
2530
2536
  fullName: string;
2531
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
2537
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
2532
2538
  number: number;
2533
2539
  };
2534
2540
  /** @description Which pull request to merge, and whether to delete its source branch afterwards. */
@@ -2571,17 +2577,17 @@ export interface components {
2571
2577
  /** @description Which issue to act on. */
2572
2578
  IssueActionRequest: {
2573
2579
  forge: components["schemas"]["Forge"];
2574
- /** @description "owner/repo", matching an Issue.repo from GET /api/dashboard. */
2580
+ /** @description "owner/repo", matching an Issue.repo from GET /api/v1/dashboard. */
2575
2581
  fullName: string;
2576
- /** @description Matching an Issue.number from GET /api/dashboard. */
2582
+ /** @description Matching an Issue.number from GET /api/v1/dashboard. */
2577
2583
  number: number;
2578
2584
  };
2579
2585
  /** @description Which issue to comment on, and what to say. */
2580
2586
  IssueCommentRequest: {
2581
2587
  forge: components["schemas"]["Forge"];
2582
- /** @description "owner/repo", matching an Issue.repo from GET /api/dashboard. */
2588
+ /** @description "owner/repo", matching an Issue.repo from GET /api/v1/dashboard. */
2583
2589
  fullName: string;
2584
- /** @description Matching an Issue.number from GET /api/dashboard. */
2590
+ /** @description Matching an Issue.number from GET /api/v1/dashboard. */
2585
2591
  number: number;
2586
2592
  /** @description The comment, as Markdown. Blank text is refused. */
2587
2593
  body: string;
@@ -2589,7 +2595,7 @@ export interface components {
2589
2595
  /** @description Which repository's default branch to rerun the failed checks of. */
2590
2596
  MainBranchRerunRequest: {
2591
2597
  forge: components["schemas"]["Forge"];
2592
- /** @description "owner/repo", matching a MainBranch.fullName from GET /api/main-branches. */
2598
+ /** @description "owner/repo", matching a MainBranch.fullName from GET /api/v1/main-branches. */
2593
2599
  fullName: string;
2594
2600
  };
2595
2601
  /**
@@ -2598,9 +2604,9 @@ export interface components {
2598
2604
  */
2599
2605
  PullRequestHideRequest: {
2600
2606
  forge: components["schemas"]["Forge"];
2601
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
2607
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
2602
2608
  fullName: string;
2603
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
2609
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
2604
2610
  number: number;
2605
2611
  /** @description Hide for this many days, then show it again on its own. */
2606
2612
  days?: number;
@@ -2608,9 +2614,9 @@ export interface components {
2608
2614
  /** @description Which pull request to act on, and which of Dependabot's own comment commands to send. */
2609
2615
  PullRequestDependabotActionRequest: {
2610
2616
  forge: components["schemas"]["Forge"];
2611
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
2617
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
2612
2618
  fullName: string;
2613
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
2619
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
2614
2620
  number: number;
2615
2621
  /**
2616
2622
  * @description Which Dependabot comment command to post — "@dependabot rebase" or "@dependabot recreate".
@@ -2741,14 +2747,14 @@ export interface components {
2741
2747
  /** @description That job's own page on the forge that ran it — never the pull request's own page. */
2742
2748
  url: string;
2743
2749
  /**
2744
- * @description The Actions job (or check run) id to pass to GET /api/checks/log.
2750
+ * @description The Actions job (or check run) id to pass to GET /api/v1/checks/log.
2745
2751
  * Absent for a legacy commit status and for a workflow held for
2746
2752
  * approval, which have no output to read.
2747
2753
  */
2748
2754
  jobId?: number;
2749
2755
  /**
2750
2756
  * @description The Actions workflow run this job belongs to, to pass to
2751
- * `POST /api/checks/cancel-run`. Present on every Actions job,
2757
+ * `POST /api/v1/checks/cancel-run`. Present on every Actions job,
2752
2758
  * finished or not; only a job that is queued or running has
2753
2759
  * anything left to cancel, which a client reads from `status`. A
2754
2760
  * third-party check and a legacy commit status have none.
@@ -2817,8 +2823,8 @@ export interface components {
2817
2823
  * the first five failed jobs of a list, in the list's order.
2818
2824
  * Forgejo never fills it in a list, since that would read a log
2819
2825
  * while the list is built: ask for it through
2820
- * GET /api/checks/log with `excerpt=true`. The whole output is read
2821
- * through GET /api/checks/log.
2826
+ * GET /api/v1/checks/log with `excerpt=true`. The whole output is read
2827
+ * through GET /api/v1/checks/log.
2822
2828
  */
2823
2829
  excerpt?: string;
2824
2830
  };
@@ -3549,7 +3555,7 @@ export interface components {
3549
3555
  /**
3550
3556
  * @description Whether the dashboard brings this pull request's branch up to date by
3551
3557
  * itself: the pull request's own choice when it has one
3552
- * (`POST /api/pull-requests/auto-update`), else its repo's
3558
+ * (`POST /api/v1/pull-requests/auto-update`), else its repo's
3553
3559
  * auto-update setting. Always present.
3554
3560
  */
3555
3561
  AutoUpdate: {
@@ -3583,9 +3589,9 @@ export interface components {
3583
3589
  */
3584
3590
  PullRequestAutoUpdateRequest: {
3585
3591
  forge: components["schemas"]["Forge"];
3586
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
3592
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
3587
3593
  fullName: string;
3588
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
3594
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
3589
3595
  number: number;
3590
3596
  /**
3591
3597
  * @description `true` to update this pull request automatically, `false` to
@@ -3603,9 +3609,9 @@ export interface components {
3603
3609
  */
3604
3610
  action: "update_branch" | "dependabot_rebase" | "renovate_rebase";
3605
3611
  forge: components["schemas"]["Forge"];
3606
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
3612
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
3607
3613
  fullName: string;
3608
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
3614
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
3609
3615
  number: number;
3610
3616
  };
3611
3617
  /**
@@ -3614,7 +3620,7 @@ export interface components {
3614
3620
  * with Cancel, and a final one in its Activity list.
3615
3621
  */
3616
3622
  QueuedAction: {
3617
- /** @description Opaque. What DELETE /api/queued-actions/{id} takes. */
3623
+ /** @description Opaque. What DELETE /api/v1/queued-actions/{id} takes. */
3618
3624
  id: string;
3619
3625
  /** @enum {string} */
3620
3626
  action: "update_branch" | "dependabot_rebase" | "renovate_rebase";
@@ -3972,7 +3978,7 @@ export interface components {
3972
3978
  Dashboard: {
3973
3979
  /**
3974
3980
  * @description The signed-in user's queued actions, waiting and finished in the
3975
- * last 24 hours (GET /api/queued-actions), so a client lists them in
3981
+ * last 24 hours (GET /api/v1/queued-actions), so a client lists them in
3976
3982
  * its Activity panel and learns an outcome from the stream it
3977
3983
  * already reads. Always present, empty when there are none.
3978
3984
  */
@@ -4009,14 +4015,14 @@ export interface components {
4009
4015
  * last run: those rows are on the page, and their forge reports
4010
4016
  * `reachable: false` with `staleSince` until the first refresh
4011
4017
  * succeeds. The same
4012
- * on `GET /api/dashboard`, the stream and the MCP `get_dashboard`
4018
+ * on `GET /api/v1/dashboard`, the stream and the MCP `get_dashboard`
4013
4019
  * output. Always present. A client of an older server that
4014
4020
  * lacks it should treat a missing flag as true (loaded).
4015
4021
  */
4016
4022
  firstRefreshDone: boolean;
4017
4023
  navCounts: components["schemas"]["NavCounts"];
4018
4024
  /**
4019
- * @description What `GET /api/main-branches` answers, from the same snapshot and
4025
+ * @description What `GET /api/v1/main-branches` answers, from the same snapshot and
4020
4026
  * with the same ignore list, so the Main branches page redraws from
4021
4027
  * the message every other page reads. It reads the endpoint itself only
4022
4028
  * while the stream is down or just back.
@@ -4030,7 +4036,7 @@ export interface components {
4030
4036
  generatedAt: string;
4031
4037
  /**
4032
4038
  * @description How often, in seconds, a client should re-read GET
4033
- * /api/dashboard. The server's advice, so a client needs no
4039
+ * /api/v1/dashboard. The server's advice, so a client needs no
4034
4040
  * interval of its own. The read is cheap and never calls a
4035
4041
  * forge; this is not the backend's refresh schedule. It is
4036
4042
  * shorter (2) until the viewer's first refresh has finished, so a
@@ -4097,7 +4103,7 @@ export interface components {
4097
4103
  /** @description One tracked repository and the CI status of its default branch. */
4098
4104
  MainBranch: {
4099
4105
  forge: components["schemas"]["Forge"];
4100
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
4106
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
4101
4107
  fullName: string;
4102
4108
  /** @description The repository's own page on its forge. */
4103
4109
  url: string;
@@ -4133,7 +4139,7 @@ export interface components {
4133
4139
  * @description What each workflow run attempt on the newest commit did, the
4134
4140
  * facts `status`, `failingJobs` and `checks` were worked out from,
4135
4141
  * in the order the forge listed them. A client can fold them into
4136
- * its own pill. They are the jobs `GET /api/main-branches/checks`
4142
+ * its own pill. They are the jobs `GET /api/v1/main-branches/checks`
4137
4143
  * lists, grouped as the stream's `run` events group them. Present
4138
4144
  * for a repository with at least one check. On GitHub they are the
4139
4145
  * first 50 checks of the newest commit, grouped by the workflow run
@@ -4485,9 +4491,9 @@ export interface components {
4485
4491
  responses: {
4486
4492
  /**
4487
4493
  * @description This address made too many sign-in or registration requests. The
4488
- * four ceremony endpoints (`/api/auth/register/begin`,
4489
- * `/api/auth/register/finish`, `/api/auth/login/begin` and
4490
- * `/api/auth/login/finish`) share one allowance per client address: a
4494
+ * four ceremony endpoints (`/api/v1/auth/register/begin`,
4495
+ * `/api/v1/auth/register/finish`, `/api/v1/auth/login/begin` and
4496
+ * `/api/v1/auth/login/finish`) share one allowance per client address: a
4491
4497
  * burst of 10 requests, then one more every 6 seconds. A person signing
4492
4498
  * in uses two requests, so they never reach it. Wait `Retry-After`
4493
4499
  * seconds and try again. The client address is the connection's own, or
@@ -4516,7 +4522,7 @@ export interface components {
4516
4522
  PathWebhookToken: string;
4517
4523
  PathTokenID: string;
4518
4524
  /**
4519
- * @description Whether pull requests the user hid (`POST /api/pull-requests/hide`)
4525
+ * @description Whether pull requests the user hid (`POST /api/v1/pull-requests/hide`)
4520
4526
  * are in `pullRequests`, marked `hidden: true`. Defaults to `false`: a
4521
4527
  * hidden pull request is left out and counted in the response's
4522
4528
  * `hiddenPullRequests`. A client lists the hidden ones, to offer a
@@ -6764,7 +6770,7 @@ export interface operations {
6764
6770
  * already ticked: the rebase is queued, and nothing was changed.
6765
6771
  * A client that follows `allowedActions` never meets it, since a
6766
6772
  * rebase that is already requested is not offered; it can be
6767
- * withdrawn with `POST /api/pull-requests/renovate-rebase/cancel`.
6773
+ * withdrawn with `POST /api/v1/pull-requests/renovate-rebase/cancel`.
6768
6774
  */
6769
6775
  409: {
6770
6776
  headers: {
@@ -6892,9 +6898,9 @@ export interface operations {
6892
6898
  parameters: {
6893
6899
  query: {
6894
6900
  forge: components["schemas"]["Forge"];
6895
- /** @description "owner/repo", matching a Repo.fullName from GET /api/dashboard. */
6901
+ /** @description "owner/repo", matching a Repo.fullName from GET /api/v1/dashboard. */
6896
6902
  fullName: string;
6897
- /** @description Matching a PullRequest.number from GET /api/dashboard. */
6903
+ /** @description Matching a PullRequest.number from GET /api/v1/dashboard. */
6898
6904
  number: number;
6899
6905
  };
6900
6906
  header?: never;
@@ -6972,9 +6978,9 @@ export interface operations {
6972
6978
  parameters: {
6973
6979
  query: {
6974
6980
  forge: components["schemas"]["Forge"];
6975
- /** @description "owner/repo", matching an Issue.repo from GET /api/dashboard. */
6981
+ /** @description "owner/repo", matching an Issue.repo from GET /api/v1/dashboard. */
6976
6982
  fullName: string;
6977
- /** @description Matching an Issue.number from GET /api/dashboard. */
6983
+ /** @description Matching an Issue.number from GET /api/v1/dashboard. */
6978
6984
  number: number;
6979
6985
  };
6980
6986
  header?: never;
@@ -7280,9 +7286,9 @@ export interface operations {
7280
7286
  parameters: {
7281
7287
  query: {
7282
7288
  forge: components["schemas"]["Forge"];
7283
- /** @description "owner/repo", matching a MainBranch.fullName from GET /api/main-branches. */
7289
+ /** @description "owner/repo", matching a MainBranch.fullName from GET /api/v1/main-branches. */
7284
7290
  fullName: string;
7285
- /** @description Matching a MainBranchRelease.tag from GET /api/main-branches. */
7291
+ /** @description Matching a MainBranchRelease.tag from GET /api/v1/main-branches. */
7286
7292
  tag: string;
7287
7293
  };
7288
7294
  header?: never;
@@ -7595,7 +7601,8 @@ export interface operations {
7595
7601
  content: {
7596
7602
  /**
7597
7603
  * @example {
7598
- * "version": "0.12.1"
7604
+ * "version": "0.12.1",
7605
+ * "apiVersion": "v1"
7599
7606
  * }
7600
7607
  */
7601
7608
  "application/json": components["schemas"]["Version"];
@@ -7615,7 +7622,7 @@ export interface operations {
7615
7622
  */
7616
7623
  includeDrafts?: components["parameters"]["QueryIncludeDrafts"];
7617
7624
  /**
7618
- * @description Whether pull requests the user hid (`POST /api/pull-requests/hide`)
7625
+ * @description Whether pull requests the user hid (`POST /api/v1/pull-requests/hide`)
7619
7626
  * are in `pullRequests`, marked `hidden: true`. Defaults to `false`: a
7620
7627
  * hidden pull request is left out and counted in the response's
7621
7628
  * `hiddenPullRequests`. A client lists the hidden ones, to offer a
@@ -7670,7 +7677,7 @@ export interface operations {
7670
7677
  */
7671
7678
  includeDrafts?: components["parameters"]["QueryIncludeDrafts"];
7672
7679
  /**
7673
- * @description Whether pull requests the user hid (`POST /api/pull-requests/hide`)
7680
+ * @description Whether pull requests the user hid (`POST /api/v1/pull-requests/hide`)
7674
7681
  * are in `pullRequests`, marked `hidden: true`. Defaults to `false`: a
7675
7682
  * hidden pull request is left out and counted in the response's
7676
7683
  * `hiddenPullRequests`. A client lists the hidden ones, to offer a
@@ -7693,7 +7700,7 @@ export interface operations {
7693
7700
  responses: {
7694
7701
  /**
7695
7702
  * @description An SSE stream. Each event's `data` field is a JSON-encoded
7696
- * snapshot, identical in shape to GET /api/dashboard's
7703
+ * snapshot, identical in shape to GET /api/v1/dashboard's
7697
7704
  * response body. A named `run` event carries a `RunEvent`
7698
7705
  * instead.
7699
7706
  */
@@ -7840,7 +7847,7 @@ export interface operations {
7840
7847
  */
7841
7848
  includeDrafts?: components["parameters"]["QueryIncludeDrafts"];
7842
7849
  /**
7843
- * @description Whether pull requests the user hid (`POST /api/pull-requests/hide`)
7850
+ * @description Whether pull requests the user hid (`POST /api/v1/pull-requests/hide`)
7844
7851
  * are in `pullRequests`, marked `hidden: true`. Defaults to `false`: a
7845
7852
  * hidden pull request is left out and counted in the response's
7846
7853
  * `hiddenPullRequests`. A client lists the hidden ones, to offer a
@@ -8023,7 +8030,7 @@ export interface operations {
8023
8030
  parameters: {
8024
8031
  query: {
8025
8032
  forge: components["schemas"]["Forge"];
8026
- /** @description "owner/repo", matching a MainBranch.fullName from GET /api/main-branches. */
8033
+ /** @description "owner/repo", matching a MainBranch.fullName from GET /api/v1/main-branches. */
8027
8034
  fullName: string;
8028
8035
  };
8029
8036
  header?: never;