@cesar-richard/git-connector-sdk 4.21.0 → 4.22.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 (2) hide show
  1. package/dist/schema.d.ts +3767 -66
  2. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -129,7 +129,7 @@ export interface paths {
129
129
  delete?: never;
130
130
  options?: never;
131
131
  head?: never;
132
- /** @description Partial upsert of a tracker's delivery/opened label and native-status sets. Judged on the RESULT of the partial upsert, not on the patch. One combination is rejected with 400: a GITHUB tracker declaring delivering statuses and NO delivery label — the Project v2 status CHRONOLOGY has no reader, so nothing would be left to classify a delivery and the tracker's CRA would be silently empty. GitHub + statuses + labels is accepted (the label stage governs, the status stage contributes nothing it can read), `openedStatuses` is unaffected, and clearing `deliveryStatuses` is always accepted. GitLab accepts status-only rules — that is a supported, label-free delivery process. */
132
+ /** @description Partial upsert of a tracker's delivery/opened label and native-status sets. Judged on the RESULT of the partial upsert, not on the patch. One combination is rejected with 400: a GITHUB tracker declaring delivering statuses and NO delivery label — the Project v2 status CHRONOLOGY has no reader, so nothing would be left to classify a delivery and the tracker's CRA would be silently empty. GitHub + statuses + labels is accepted (the label stage governs, the status stage contributes nothing it can read), `openedStatuses` is unaffected, and clearing `deliveryStatuses` is always accepted. GitLab accepts status-only rules — that is a supported, label-free delivery process. Optional `If-Match` preview token: 409 and no write when stale. */
133
133
  patch: operations["patchV1ProjectsBySourceByProjectKeyDelivery-rules"];
134
134
  trace?: never;
135
135
  };
@@ -146,6 +146,7 @@ export interface paths {
146
146
  delete?: never;
147
147
  options?: never;
148
148
  head?: never;
149
+ /** @description Optional `If-Match` preview token: 409 and no write when the configuration changed since the preview or the body differs. */
149
150
  patch: operations["patchV1ApplicationsBySlugDelivery-rules"];
150
151
  trace?: never;
151
152
  };
@@ -162,7 +163,8 @@ export interface paths {
162
163
  delete?: never;
163
164
  options?: never;
164
165
  head?: never;
165
- patch?: never;
166
+ /** @description Per-field update of a tracker's workflow rules: a field left out keeps its stored value, `statusSource: null` clears it. Validated on the merged result. Operator scope required. Optional `If-Match` preview token: 409 and no write when stale. */
167
+ patch: operations["patchV1ProjectsBySourceByProjectKeyWorkflow-rules"];
166
168
  trace?: never;
167
169
  };
168
170
  "/v1/projects": {
@@ -255,6 +257,7 @@ export interface paths {
255
257
  };
256
258
  get?: never;
257
259
  put?: never;
260
+ /** @description Optional `If-Match` preview token: 409 and no write when the alias list changed since the preview or the body differs. */
258
261
  post: operations["postV1IdentitiesByIdAliases"];
259
262
  delete?: never;
260
263
  options?: never;
@@ -272,6 +275,7 @@ export interface paths {
272
275
  get?: never;
273
276
  put?: never;
274
277
  post?: never;
278
+ /** @description Optional `If-Match` preview token: 409 and no write when the alias list changed since the preview. */
275
279
  delete: operations["deleteV1IdentitiesByIdAliasesByProviderByLogin"];
276
280
  options?: never;
277
281
  head?: never;
@@ -294,6 +298,143 @@ export interface paths {
294
298
  patch?: never;
295
299
  trace?: never;
296
300
  };
301
+ "/v1/review/items": {
302
+ parameters: {
303
+ query?: never;
304
+ header?: never;
305
+ path?: never;
306
+ cookie?: never;
307
+ };
308
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. La file « À traiter » : `kinds` est un CSV parmi `ambiguous`, `uncertain`, `unresolved`, `undelivered`, `unassigned`, `workflow-conflict`, `unmapped-status` ; un kind inconnu est un 400. */
309
+ get: operations["getV1ReviewItems"];
310
+ put?: never;
311
+ post?: never;
312
+ delete?: never;
313
+ options?: never;
314
+ head?: never;
315
+ patch?: never;
316
+ trace?: never;
317
+ };
318
+ "/v1/review/items/{key}/seen": {
319
+ parameters: {
320
+ query?: never;
321
+ header?: never;
322
+ path?: never;
323
+ cookie?: never;
324
+ };
325
+ get?: never;
326
+ put?: never;
327
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Masque une ligne jusqu'à ce que son contenu change. */
328
+ post: operations["postV1ReviewItemsByKeySeen"];
329
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Remet la ligne dans la liste. */
330
+ delete: operations["deleteV1ReviewItemsByKeySeen"];
331
+ options?: never;
332
+ head?: never;
333
+ patch?: never;
334
+ trace?: never;
335
+ };
336
+ "/v1/sync": {
337
+ parameters: {
338
+ query?: never;
339
+ header?: never;
340
+ path?: never;
341
+ cookie?: never;
342
+ };
343
+ get?: never;
344
+ put?: never;
345
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Resynchronise un seul dépôt (`repo` obligatoire), éventuellement sur les `days` derniers jours. Jamais de backfill complet : `backfill` est refusé (400). Un dépôt ni code ni tracker déclaré est refusé (404). Un dépôt sans curseur est backfillé automatiquement par la synchro normale (comme le cron). */
346
+ post: operations["postV1Sync"];
347
+ delete?: never;
348
+ options?: never;
349
+ head?: never;
350
+ patch?: never;
351
+ trace?: never;
352
+ };
353
+ "/v1/previews/delivery-rules": {
354
+ parameters: {
355
+ query?: never;
356
+ header?: never;
357
+ path?: never;
358
+ cookie?: never;
359
+ };
360
+ get?: never;
361
+ put?: never;
362
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Lecture seule : rien n'est écrit. Simulates `/v1/deliverables` on the window with the proposed delivery rules substituted in memory (per-field merge, exactly like the PATCH): lines that appear, disappear, change month or attribution, on `issues[]` and `standalone[]`. `diff.scoped` (with `identity`) is that person's invoice. Same 400 as the PATCH for a GitHub tracker left with delivering statuses and no delivery label. */
363
+ post: operations["postV1PreviewsDelivery-rules"];
364
+ delete?: never;
365
+ options?: never;
366
+ head?: never;
367
+ patch?: never;
368
+ trace?: never;
369
+ };
370
+ "/v1/previews/workflow-rules": {
371
+ parameters: {
372
+ query?: never;
373
+ header?: never;
374
+ path?: never;
375
+ cookie?: never;
376
+ };
377
+ get?: never;
378
+ put?: never;
379
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Lecture seule : rien n'est écrit. No CRA effect: returns the rules before/after (per-field merge, exactly like the PATCH) and the `workflow.state` distribution of the tracker's OPEN issues before/after, with the issues whose state changes (≤ 200). */
380
+ post: operations["postV1PreviewsWorkflow-rules"];
381
+ delete?: never;
382
+ options?: never;
383
+ head?: never;
384
+ patch?: never;
385
+ trace?: never;
386
+ };
387
+ "/v1/previews/identity-aliases": {
388
+ parameters: {
389
+ query?: never;
390
+ header?: never;
391
+ path?: never;
392
+ cookie?: never;
393
+ };
394
+ get?: never;
395
+ put?: never;
396
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Lecture seule : rien n'est écrit. The scoped `/v1/deliverables` view of the identity with the proposed alias list substituted. Adding an alias already held by ANOTHER identity moves it: that identity's own invoice changes too and is not shown here. */
397
+ post: operations["postV1PreviewsIdentity-aliases"];
398
+ delete?: never;
399
+ options?: never;
400
+ head?: never;
401
+ patch?: never;
402
+ trace?: never;
403
+ };
404
+ "/v1/projects/{source}/{projectKey}/profile": {
405
+ parameters: {
406
+ query?: never;
407
+ header?: never;
408
+ path?: never;
409
+ cookie?: never;
410
+ };
411
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Lecture seule, descriptive : jamais lue par la corrélation ni par le CRA. Shape of one tracker: issue counts (those UPDATED in [from, to]), workflow origin/state, native statuses, labels (top 50), per-assignee state, and merge-request counts of the same-named code repo. */
412
+ get: operations["getV1ProjectsBySourceByProjectKeyProfile"];
413
+ put?: never;
414
+ post?: never;
415
+ delete?: never;
416
+ options?: never;
417
+ head?: never;
418
+ patch?: never;
419
+ trace?: never;
420
+ };
421
+ "/v1/projects/{source}/{projectKey}/label-status-correspondence": {
422
+ parameters: {
423
+ query?: never;
424
+ header?: never;
425
+ path?: never;
426
+ cookie?: never;
427
+ };
428
+ /** @description Réservée à la portée opérateur (MCP) — hors contrat consommateur. Lecture seule, descriptive : jamais lue par la corrélation ni par le CRA. For each label ADDED to an issue, the native statuses set within ±windowHours (default 48, 1..720) on the same issue — reveals which labels a team uses as a stand-in for a status. Needs the status chronology (read once the tracker declares a GitLab status source or delivering statuses). */
429
+ get: operations["getV1ProjectsBySourceByProjectKeyLabel-status-correspondence"];
430
+ put?: never;
431
+ post?: never;
432
+ delete?: never;
433
+ options?: never;
434
+ head?: never;
435
+ patch?: never;
436
+ trace?: never;
437
+ };
297
438
  }
298
439
  export type webhooks = Record<string, never>;
299
440
  export interface components {
@@ -352,8 +493,10 @@ export interface components {
352
493
  severity: string | null;
353
494
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
354
495
  mergedBy: string | null;
355
- /** @description Branch merged INTO. The source side is `branch`. */
496
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
356
497
  targetBranch: string | null;
498
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
499
+ sourceBranch: string | null;
357
500
  /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
358
501
  applications: string[];
359
502
  number: string | number;
@@ -459,8 +602,10 @@ export interface components {
459
602
  severity: string | null;
460
603
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
461
604
  mergedBy: string | null;
462
- /** @description Branch merged INTO. The source side is `branch`. */
605
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
463
606
  targetBranch: string | null;
607
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
608
+ sourceBranch: string | null;
464
609
  /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
465
610
  applications: string[];
466
611
  number: string | number;
@@ -742,8 +887,10 @@ export interface components {
742
887
  mergedAt: string | null;
743
888
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
744
889
  mergedBy: string | null;
745
- /** @description Branch merged INTO. The source side is `branch`. */
890
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
746
891
  targetBranch: string | null;
892
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
893
+ sourceBranch: string | null;
747
894
  reviewRequestedAt: string | null;
748
895
  volume: {
749
896
  additions: string | number;
@@ -939,6 +1086,121 @@ export interface components {
939
1086
  changedBy: string | null;
940
1087
  }[];
941
1088
  };
1089
+ DeliverableLineChange: {
1090
+ kind: "issue" | "standalone";
1091
+ /** @description `${source}:${projectKey}:${number}` */
1092
+ key: string;
1093
+ title: string;
1094
+ url: string;
1095
+ before: {
1096
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1097
+ deliveredAt: string | null;
1098
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1099
+ attribution: string | null;
1100
+ } | null;
1101
+ after: {
1102
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1103
+ deliveredAt: string | null;
1104
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1105
+ attribution: string | null;
1106
+ } | null;
1107
+ };
1108
+ DeliverableLineState: {
1109
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1110
+ deliveredAt: string | null;
1111
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1112
+ attribution: string | null;
1113
+ };
1114
+ DeliverablesDiff: {
1115
+ appeared: {
1116
+ kind: "issue" | "standalone";
1117
+ /** @description `${source}:${projectKey}:${number}` */
1118
+ key: string;
1119
+ title: string;
1120
+ url: string;
1121
+ before: {
1122
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1123
+ deliveredAt: string | null;
1124
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1125
+ attribution: string | null;
1126
+ } | null;
1127
+ after: {
1128
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1129
+ deliveredAt: string | null;
1130
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1131
+ attribution: string | null;
1132
+ } | null;
1133
+ }[];
1134
+ disappeared: {
1135
+ kind: "issue" | "standalone";
1136
+ /** @description `${source}:${projectKey}:${number}` */
1137
+ key: string;
1138
+ title: string;
1139
+ url: string;
1140
+ before: {
1141
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1142
+ deliveredAt: string | null;
1143
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1144
+ attribution: string | null;
1145
+ } | null;
1146
+ after: {
1147
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1148
+ deliveredAt: string | null;
1149
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1150
+ attribution: string | null;
1151
+ } | null;
1152
+ }[];
1153
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
1154
+ movedMonth: {
1155
+ kind: "issue" | "standalone";
1156
+ /** @description `${source}:${projectKey}:${number}` */
1157
+ key: string;
1158
+ title: string;
1159
+ url: string;
1160
+ before: {
1161
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1162
+ deliveredAt: string | null;
1163
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1164
+ attribution: string | null;
1165
+ } | null;
1166
+ after: {
1167
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1168
+ deliveredAt: string | null;
1169
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1170
+ attribution: string | null;
1171
+ } | null;
1172
+ }[];
1173
+ /** @description Only meaningful on a scoped run. */
1174
+ attributionChanged: {
1175
+ kind: "issue" | "standalone";
1176
+ /** @description `${source}:${projectKey}:${number}` */
1177
+ key: string;
1178
+ title: string;
1179
+ url: string;
1180
+ before: {
1181
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1182
+ deliveredAt: string | null;
1183
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1184
+ attribution: string | null;
1185
+ } | null;
1186
+ after: {
1187
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1188
+ deliveredAt: string | null;
1189
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1190
+ attribution: string | null;
1191
+ } | null;
1192
+ }[];
1193
+ totals: {
1194
+ before: {
1195
+ issues: string | number;
1196
+ standalone: string | number;
1197
+ };
1198
+ after: {
1199
+ issues: string | number;
1200
+ standalone: string | number;
1201
+ };
1202
+ };
1203
+ };
942
1204
  DeliverablesListResponse: {
943
1205
  issues: {
944
1206
  source: "github" | "gitlab";
@@ -1015,8 +1277,10 @@ export interface components {
1015
1277
  mergedAt: string | null;
1016
1278
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
1017
1279
  mergedBy: string | null;
1018
- /** @description Branch merged INTO. The source side is `branch`. */
1280
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
1019
1281
  targetBranch: string | null;
1282
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
1283
+ sourceBranch: string | null;
1020
1284
  reviewRequestedAt: string | null;
1021
1285
  volume: {
1022
1286
  additions: string | number;
@@ -1272,6 +1536,257 @@ export interface components {
1272
1536
  deliveryStatuses?: string[];
1273
1537
  openedStatuses?: string[];
1274
1538
  };
1539
+ DeliveryRulesPreviewRequest: {
1540
+ target: {
1541
+ /** @constant */
1542
+ kind: "tracker";
1543
+ source: "github" | "gitlab";
1544
+ projectKey: string;
1545
+ } | {
1546
+ /** @constant */
1547
+ kind: "application";
1548
+ slug: string;
1549
+ };
1550
+ patch: {
1551
+ deliveryLabels?: string[];
1552
+ openedLabels?: string[];
1553
+ deliveryStatuses?: string[];
1554
+ openedStatuses?: string[];
1555
+ };
1556
+ /** @description Window start (ISO date or datetime). */
1557
+ from: string;
1558
+ /** @description Window end (ISO date or datetime). */
1559
+ to: string;
1560
+ /** @description Identity id for the scoped view (attribution changes, i.e. that person's invoice). Absent: `diff.scoped` is null. */
1561
+ identity?: string | number;
1562
+ };
1563
+ DeliveryRulesPreviewResponse: {
1564
+ current: {
1565
+ source: "github" | "gitlab";
1566
+ projectKey: string;
1567
+ deliveryLabels: string[];
1568
+ openedLabels: string[];
1569
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
1570
+ deliveryStatuses: string[];
1571
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
1572
+ openedStatuses: string[];
1573
+ updatedAt: string | null;
1574
+ } | {
1575
+ applicationSlug: string;
1576
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
1577
+ deliveryLabels: string[];
1578
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
1579
+ openedLabels: string[];
1580
+ updatedAt: string | null;
1581
+ };
1582
+ proposed: {
1583
+ source: "github" | "gitlab";
1584
+ projectKey: string;
1585
+ deliveryLabels: string[];
1586
+ openedLabels: string[];
1587
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
1588
+ deliveryStatuses: string[];
1589
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
1590
+ openedStatuses: string[];
1591
+ updatedAt: string | null;
1592
+ } | {
1593
+ applicationSlug: string;
1594
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
1595
+ deliveryLabels: string[];
1596
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
1597
+ openedLabels: string[];
1598
+ updatedAt: string | null;
1599
+ };
1600
+ diff: {
1601
+ unscoped: {
1602
+ appeared: {
1603
+ kind: "issue" | "standalone";
1604
+ /** @description `${source}:${projectKey}:${number}` */
1605
+ key: string;
1606
+ title: string;
1607
+ url: string;
1608
+ before: {
1609
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1610
+ deliveredAt: string | null;
1611
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1612
+ attribution: string | null;
1613
+ } | null;
1614
+ after: {
1615
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1616
+ deliveredAt: string | null;
1617
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1618
+ attribution: string | null;
1619
+ } | null;
1620
+ }[];
1621
+ disappeared: {
1622
+ kind: "issue" | "standalone";
1623
+ /** @description `${source}:${projectKey}:${number}` */
1624
+ key: string;
1625
+ title: string;
1626
+ url: string;
1627
+ before: {
1628
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1629
+ deliveredAt: string | null;
1630
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1631
+ attribution: string | null;
1632
+ } | null;
1633
+ after: {
1634
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1635
+ deliveredAt: string | null;
1636
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1637
+ attribution: string | null;
1638
+ } | null;
1639
+ }[];
1640
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
1641
+ movedMonth: {
1642
+ kind: "issue" | "standalone";
1643
+ /** @description `${source}:${projectKey}:${number}` */
1644
+ key: string;
1645
+ title: string;
1646
+ url: string;
1647
+ before: {
1648
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1649
+ deliveredAt: string | null;
1650
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1651
+ attribution: string | null;
1652
+ } | null;
1653
+ after: {
1654
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1655
+ deliveredAt: string | null;
1656
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1657
+ attribution: string | null;
1658
+ } | null;
1659
+ }[];
1660
+ /** @description Only meaningful on a scoped run. */
1661
+ attributionChanged: {
1662
+ kind: "issue" | "standalone";
1663
+ /** @description `${source}:${projectKey}:${number}` */
1664
+ key: string;
1665
+ title: string;
1666
+ url: string;
1667
+ before: {
1668
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1669
+ deliveredAt: string | null;
1670
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1671
+ attribution: string | null;
1672
+ } | null;
1673
+ after: {
1674
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1675
+ deliveredAt: string | null;
1676
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1677
+ attribution: string | null;
1678
+ } | null;
1679
+ }[];
1680
+ totals: {
1681
+ before: {
1682
+ issues: string | number;
1683
+ standalone: string | number;
1684
+ };
1685
+ after: {
1686
+ issues: string | number;
1687
+ standalone: string | number;
1688
+ };
1689
+ };
1690
+ };
1691
+ scoped: {
1692
+ appeared: {
1693
+ kind: "issue" | "standalone";
1694
+ /** @description `${source}:${projectKey}:${number}` */
1695
+ key: string;
1696
+ title: string;
1697
+ url: string;
1698
+ before: {
1699
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1700
+ deliveredAt: string | null;
1701
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1702
+ attribution: string | null;
1703
+ } | null;
1704
+ after: {
1705
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1706
+ deliveredAt: string | null;
1707
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1708
+ attribution: string | null;
1709
+ } | null;
1710
+ }[];
1711
+ disappeared: {
1712
+ kind: "issue" | "standalone";
1713
+ /** @description `${source}:${projectKey}:${number}` */
1714
+ key: string;
1715
+ title: string;
1716
+ url: string;
1717
+ before: {
1718
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1719
+ deliveredAt: string | null;
1720
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1721
+ attribution: string | null;
1722
+ } | null;
1723
+ after: {
1724
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1725
+ deliveredAt: string | null;
1726
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1727
+ attribution: string | null;
1728
+ } | null;
1729
+ }[];
1730
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
1731
+ movedMonth: {
1732
+ kind: "issue" | "standalone";
1733
+ /** @description `${source}:${projectKey}:${number}` */
1734
+ key: string;
1735
+ title: string;
1736
+ url: string;
1737
+ before: {
1738
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1739
+ deliveredAt: string | null;
1740
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1741
+ attribution: string | null;
1742
+ } | null;
1743
+ after: {
1744
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1745
+ deliveredAt: string | null;
1746
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1747
+ attribution: string | null;
1748
+ } | null;
1749
+ }[];
1750
+ /** @description Only meaningful on a scoped run. */
1751
+ attributionChanged: {
1752
+ kind: "issue" | "standalone";
1753
+ /** @description `${source}:${projectKey}:${number}` */
1754
+ key: string;
1755
+ title: string;
1756
+ url: string;
1757
+ before: {
1758
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1759
+ deliveredAt: string | null;
1760
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1761
+ attribution: string | null;
1762
+ } | null;
1763
+ after: {
1764
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
1765
+ deliveredAt: string | null;
1766
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
1767
+ attribution: string | null;
1768
+ } | null;
1769
+ }[];
1770
+ totals: {
1771
+ before: {
1772
+ issues: string | number;
1773
+ standalone: string | number;
1774
+ };
1775
+ after: {
1776
+ issues: string | number;
1777
+ standalone: string | number;
1778
+ };
1779
+ };
1780
+ } | null;
1781
+ };
1782
+ /** @description Send as `If-Match` on the matching PATCH with the SAME body as `patch`. */
1783
+ previewToken: string;
1784
+ /** @description True when either CRA run (before or after, issues or standalone) was capped — the diff then covers only part of the window. */
1785
+ truncated: boolean;
1786
+ };
1787
+ ErrorBody: {
1788
+ error: string;
1789
+ };
1275
1790
  ErrorResponse: {
1276
1791
  error: string;
1277
1792
  };
@@ -1773,33 +2288,147 @@ export interface components {
1773
2288
  provider: "github" | "gitlab";
1774
2289
  login: string;
1775
2290
  };
1776
- IdentityCreate: {
1777
- displayName: string;
1778
- email?: string | null;
1779
- avatarUrl?: string | null;
1780
- aliases?: {
2291
+ IdentityAliasesPreviewRequest: {
2292
+ identityId: string | number;
2293
+ op: "add" | "remove";
2294
+ provider: "github" | "gitlab";
2295
+ login: string;
2296
+ /** @description Window start (ISO date or datetime). */
2297
+ from: string;
2298
+ /** @description Window end (ISO date or datetime). */
2299
+ to: string;
2300
+ };
2301
+ IdentityAliasesPreviewResponse: {
2302
+ current: {
1781
2303
  provider: "github" | "gitlab";
1782
2304
  login: string;
1783
2305
  }[];
1784
- };
1785
- IdentityPatch: {
1786
- displayName?: string;
1787
- email?: string | null;
1788
- avatarUrl?: string | null;
1789
- };
1790
- IdentitySummary: {
1791
- id: string | number;
1792
- displayName: string;
1793
- };
1794
- IssueRef: {
1795
- source: "github" | "gitlab";
1796
- projectKey: string;
1797
- number: string | number;
1798
- };
1799
- IterationWithCount: {
1800
- id: string | number;
1801
- title: string;
1802
- startDate: string | null;
2306
+ proposed: {
2307
+ provider: "github" | "gitlab";
2308
+ login: string;
2309
+ }[];
2310
+ diff: {
2311
+ appeared: {
2312
+ kind: "issue" | "standalone";
2313
+ /** @description `${source}:${projectKey}:${number}` */
2314
+ key: string;
2315
+ title: string;
2316
+ url: string;
2317
+ before: {
2318
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2319
+ deliveredAt: string | null;
2320
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2321
+ attribution: string | null;
2322
+ } | null;
2323
+ after: {
2324
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2325
+ deliveredAt: string | null;
2326
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2327
+ attribution: string | null;
2328
+ } | null;
2329
+ }[];
2330
+ disappeared: {
2331
+ kind: "issue" | "standalone";
2332
+ /** @description `${source}:${projectKey}:${number}` */
2333
+ key: string;
2334
+ title: string;
2335
+ url: string;
2336
+ before: {
2337
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2338
+ deliveredAt: string | null;
2339
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2340
+ attribution: string | null;
2341
+ } | null;
2342
+ after: {
2343
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2344
+ deliveredAt: string | null;
2345
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2346
+ attribution: string | null;
2347
+ } | null;
2348
+ }[];
2349
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
2350
+ movedMonth: {
2351
+ kind: "issue" | "standalone";
2352
+ /** @description `${source}:${projectKey}:${number}` */
2353
+ key: string;
2354
+ title: string;
2355
+ url: string;
2356
+ before: {
2357
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2358
+ deliveredAt: string | null;
2359
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2360
+ attribution: string | null;
2361
+ } | null;
2362
+ after: {
2363
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2364
+ deliveredAt: string | null;
2365
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2366
+ attribution: string | null;
2367
+ } | null;
2368
+ }[];
2369
+ /** @description Only meaningful on a scoped run. */
2370
+ attributionChanged: {
2371
+ kind: "issue" | "standalone";
2372
+ /** @description `${source}:${projectKey}:${number}` */
2373
+ key: string;
2374
+ title: string;
2375
+ url: string;
2376
+ before: {
2377
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2378
+ deliveredAt: string | null;
2379
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2380
+ attribution: string | null;
2381
+ } | null;
2382
+ after: {
2383
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
2384
+ deliveredAt: string | null;
2385
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
2386
+ attribution: string | null;
2387
+ } | null;
2388
+ }[];
2389
+ totals: {
2390
+ before: {
2391
+ issues: string | number;
2392
+ standalone: string | number;
2393
+ };
2394
+ after: {
2395
+ issues: string | number;
2396
+ standalone: string | number;
2397
+ };
2398
+ };
2399
+ };
2400
+ /** @description Send as `If-Match` on `POST /v1/identities/{id}/aliases` (op add, body `{provider, login}`) or `DELETE /v1/identities/{id}/aliases/{provider}/{login}` (op remove). */
2401
+ previewToken: string;
2402
+ /** @description True when either CRA run was capped. */
2403
+ truncated: boolean;
2404
+ };
2405
+ IdentityCreate: {
2406
+ displayName: string;
2407
+ email?: string | null;
2408
+ avatarUrl?: string | null;
2409
+ aliases?: {
2410
+ provider: "github" | "gitlab";
2411
+ login: string;
2412
+ }[];
2413
+ };
2414
+ IdentityPatch: {
2415
+ displayName?: string;
2416
+ email?: string | null;
2417
+ avatarUrl?: string | null;
2418
+ };
2419
+ IdentitySummary: {
2420
+ id: string | number;
2421
+ displayName: string;
2422
+ };
2423
+ IssueRef: {
2424
+ source: "github" | "gitlab";
2425
+ projectKey: string;
2426
+ number: string | number;
2427
+ };
2428
+ IterationWithCount: {
2429
+ id: string | number;
2430
+ title: string;
2431
+ startDate: string | null;
1803
2432
  dueDate: string | null;
1804
2433
  state: "upcoming" | "current" | "closed" | "unknown";
1805
2434
  workItemCount: string | number;
@@ -1808,6 +2437,21 @@ export interface components {
1808
2437
  name: string;
1809
2438
  color: string | null;
1810
2439
  };
2440
+ LabelStatusCorrespondence: {
2441
+ windowHours: string | number;
2442
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
2443
+ truncated: boolean;
2444
+ /** @description Issues with at least one `added` label event and at least one native-status change. */
2445
+ issuesWithBoth: string | number;
2446
+ labels: {
2447
+ label: string;
2448
+ occurrences: string | number;
2449
+ statuses: {
2450
+ status: string;
2451
+ count: string | number;
2452
+ }[];
2453
+ }[];
2454
+ };
1811
2455
  LinkEvidence: {
1812
2456
  field: string;
1813
2457
  text: string;
@@ -1865,8 +2509,10 @@ export interface components {
1865
2509
  mergedAt: string | null;
1866
2510
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
1867
2511
  mergedBy: string | null;
1868
- /** @description Branch merged INTO. The source side is `branch`. */
2512
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
1869
2513
  targetBranch: string | null;
2514
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
2515
+ sourceBranch: string | null;
1870
2516
  reviewRequestedAt: string | null;
1871
2517
  volume: {
1872
2518
  additions: string | number;
@@ -1957,6 +2603,10 @@ export interface components {
1957
2603
  title: string | null;
1958
2604
  url: string | null;
1959
2605
  };
2606
+ PreviewAlias: {
2607
+ provider: "github" | "gitlab";
2608
+ login: string;
2609
+ };
1960
2610
  Progress: {
1961
2611
  total: string | number;
1962
2612
  completed: string | number;
@@ -1976,6 +2626,47 @@ export interface components {
1976
2626
  }[];
1977
2627
  fetchedAt: string;
1978
2628
  };
2629
+ ProjectProfile: {
2630
+ issues: {
2631
+ total: string | number;
2632
+ open: string | number;
2633
+ withIteration: string | number;
2634
+ withMilestone: string | number;
2635
+ withAssignee: string | number;
2636
+ };
2637
+ /** @description Issues per `workflow.origin` (closed|status|label|signals). */
2638
+ workflowOrigin: {
2639
+ [key: string]: string | number;
2640
+ };
2641
+ /** @description OPEN issues per computed `workflow.state`. */
2642
+ workflowState: {
2643
+ [key: string]: string | number;
2644
+ };
2645
+ /** @description Current native status per issue, read as the LAST entry of its status chronology (`statusChanges`); issues with no chronology are not counted. Sorted by count desc then name. */
2646
+ nativeStatuses: {
2647
+ name: string;
2648
+ count: string | number;
2649
+ }[];
2650
+ /** @description Top 50 labels by issue count; see `labelsTruncated`. */
2651
+ labels: {
2652
+ name: string;
2653
+ count: string | number;
2654
+ }[];
2655
+ labelsTruncated: boolean;
2656
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
2657
+ truncated: boolean;
2658
+ perAssignee: {
2659
+ login: string;
2660
+ byState: {
2661
+ [key: string]: string | number;
2662
+ };
2663
+ }[];
2664
+ /** @description `null` when the project key has no PR/MR activity at all (a pure tracker); otherwise merged PR/MRs in the window and those NO issue bills (the standalone deliverables of that code repo). */
2665
+ mergeRequests: {
2666
+ mergedInWindow: string | number;
2667
+ withoutIssue: string | number;
2668
+ } | null;
2669
+ };
1979
2670
  ProjectStatus: {
1980
2671
  /** @description Status value exactly as the tracker spells it — this is what `workflow_rules.statusRules[].value` must match, since the native-status stage of the cascade compares EXACTLY (no prefix stripping, unlike flow labels). */
1981
2672
  name: string;
@@ -2035,10 +2726,184 @@ export interface components {
2035
2726
  submittedAt: string;
2036
2727
  url: string | null;
2037
2728
  };
2729
+ ReviewActivityRef: {
2730
+ id: string;
2731
+ provider: "github" | "gitlab";
2732
+ repo: string;
2733
+ type: string;
2734
+ number: string;
2735
+ title: string;
2736
+ url: string;
2737
+ author: string | null;
2738
+ };
2739
+ ReviewCandidate: {
2740
+ id: string;
2741
+ provider: "github" | "gitlab";
2742
+ repo: string;
2743
+ type: string;
2744
+ number: string;
2745
+ title: string;
2746
+ url: string;
2747
+ author: string | null;
2748
+ attributable: boolean;
2749
+ snippets: {
2750
+ label: string;
2751
+ text: string;
2752
+ }[];
2753
+ };
2038
2754
  ReviewEventMeta: {
2039
2755
  [key: string]: unknown;
2040
2756
  };
2757
+ ReviewFixSnippet: {
2758
+ label: string;
2759
+ text: string;
2760
+ };
2761
+ ReviewItem: {
2762
+ key: string;
2763
+ kind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
2764
+ fingerprint: string;
2765
+ title: string;
2766
+ detail: string;
2767
+ occurredAt: string;
2768
+ activity: {
2769
+ id: string;
2770
+ provider: "github" | "gitlab";
2771
+ repo: string;
2772
+ type: string;
2773
+ number: string;
2774
+ title: string;
2775
+ url: string;
2776
+ author: string | null;
2777
+ } | null;
2778
+ target: {
2779
+ source: "github" | "gitlab";
2780
+ projectKey: string;
2781
+ number: string | number;
2782
+ url: string | null;
2783
+ } | null;
2784
+ evidence: string | null;
2785
+ error: string | null;
2786
+ candidates: {
2787
+ id: string;
2788
+ provider: "github" | "gitlab";
2789
+ repo: string;
2790
+ type: string;
2791
+ number: string;
2792
+ title: string;
2793
+ url: string;
2794
+ author: string | null;
2795
+ attributable: boolean;
2796
+ snippets: {
2797
+ label: string;
2798
+ text: string;
2799
+ }[];
2800
+ }[];
2801
+ confidence: number | null;
2802
+ linkKind: string | null;
2803
+ snippets: {
2804
+ label: string;
2805
+ text: string;
2806
+ }[];
2807
+ resyncRepo: string | null;
2808
+ seen: {
2809
+ by: string;
2810
+ at: string;
2811
+ } | null;
2812
+ mention: boolean;
2813
+ quiet: boolean;
2814
+ };
2815
+ ReviewItemsResponse: {
2816
+ window: {
2817
+ from: string;
2818
+ to: string;
2819
+ };
2820
+ counts: {
2821
+ ambiguous: number;
2822
+ uncertain: number;
2823
+ unresolved: number;
2824
+ undelivered: number;
2825
+ unassigned: number;
2826
+ "workflow-conflict": number;
2827
+ "unmapped-status": number;
2828
+ };
2829
+ truncated: {
2830
+ ambiguous: boolean;
2831
+ uncertain: boolean;
2832
+ unresolved: boolean;
2833
+ undelivered: boolean;
2834
+ unassigned: boolean;
2835
+ "workflow-conflict": boolean;
2836
+ "unmapped-status": boolean;
2837
+ };
2838
+ unseen: number;
2839
+ unseenMentions: number;
2840
+ legacyUnclassified: number;
2841
+ items: {
2842
+ key: string;
2843
+ kind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
2844
+ fingerprint: string;
2845
+ title: string;
2846
+ detail: string;
2847
+ occurredAt: string;
2848
+ activity: {
2849
+ id: string;
2850
+ provider: "github" | "gitlab";
2851
+ repo: string;
2852
+ type: string;
2853
+ number: string;
2854
+ title: string;
2855
+ url: string;
2856
+ author: string | null;
2857
+ } | null;
2858
+ target: {
2859
+ source: "github" | "gitlab";
2860
+ projectKey: string;
2861
+ number: string | number;
2862
+ url: string | null;
2863
+ } | null;
2864
+ evidence: string | null;
2865
+ error: string | null;
2866
+ candidates: {
2867
+ id: string;
2868
+ provider: "github" | "gitlab";
2869
+ repo: string;
2870
+ type: string;
2871
+ number: string;
2872
+ title: string;
2873
+ url: string;
2874
+ author: string | null;
2875
+ attributable: boolean;
2876
+ snippets: {
2877
+ label: string;
2878
+ text: string;
2879
+ }[];
2880
+ }[];
2881
+ confidence: number | null;
2882
+ linkKind: string | null;
2883
+ snippets: {
2884
+ label: string;
2885
+ text: string;
2886
+ }[];
2887
+ resyncRepo: string | null;
2888
+ seen: {
2889
+ by: string;
2890
+ at: string;
2891
+ } | null;
2892
+ mention: boolean;
2893
+ quiet: boolean;
2894
+ }[];
2895
+ };
2896
+ ReviewKind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
2897
+ ReviewSeenBody: {
2898
+ fingerprint: string;
2899
+ };
2041
2900
  ReviewStatus: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2901
+ ReviewTargetRef: {
2902
+ source: "github" | "gitlab";
2903
+ projectKey: string;
2904
+ number: string | number;
2905
+ url: string | null;
2906
+ };
2042
2907
  ReviewsSummary: {
2043
2908
  approvedCount: string | number;
2044
2909
  changesRequestedCount: string | number;
@@ -2107,6 +2972,12 @@ export interface components {
2107
2972
  changedAt: string;
2108
2973
  changedBy: string | null;
2109
2974
  };
2975
+ SyncAccepted: {
2976
+ /** @constant */
2977
+ status: "accepted";
2978
+ repoFilter: string;
2979
+ sinceDays?: string | number;
2980
+ };
2110
2981
  ThreadDigest: {
2111
2982
  id: string;
2112
2983
  firstNoteAuthor: string | null;
@@ -2281,8 +3152,10 @@ export interface components {
2281
3152
  mergedAt: string | null;
2282
3153
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
2283
3154
  mergedBy: string | null;
2284
- /** @description Branch merged INTO. The source side is `branch`. */
3155
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
2285
3156
  targetBranch: string | null;
3157
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
3158
+ sourceBranch: string | null;
2286
3159
  reviewRequestedAt: string | null;
2287
3160
  volume: {
2288
3161
  additions: string | number;
@@ -2536,8 +3409,10 @@ export interface components {
2536
3409
  mergedAt: string | null;
2537
3410
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
2538
3411
  mergedBy: string | null;
2539
- /** @description Branch merged INTO. The source side is `branch`. */
3412
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
2540
3413
  targetBranch: string | null;
3414
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
3415
+ sourceBranch: string | null;
2541
3416
  reviewRequestedAt: string | null;
2542
3417
  volume: {
2543
3418
  additions: string | number;
@@ -2663,6 +3538,139 @@ export interface components {
2663
3538
  prefix: string;
2664
3539
  state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
2665
3540
  };
3541
+ WorkflowRulesPatch: {
3542
+ labelRules?: {
3543
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
3544
+ prefix: string;
3545
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3546
+ }[];
3547
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
3548
+ statusSource?: {
3549
+ /** @constant */
3550
+ kind: "gitlab-native";
3551
+ } | {
3552
+ /** @constant */
3553
+ kind: "github-project";
3554
+ projectNumber: string | number;
3555
+ fieldName: string;
3556
+ } | null;
3557
+ statusRules?: {
3558
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
3559
+ value: string;
3560
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3561
+ }[];
3562
+ flowFamilies?: string[];
3563
+ };
3564
+ WorkflowRulesPreviewRequest: {
3565
+ source: "github" | "gitlab";
3566
+ projectKey: string;
3567
+ patch: {
3568
+ labelRules?: {
3569
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
3570
+ prefix: string;
3571
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3572
+ }[];
3573
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
3574
+ statusSource?: {
3575
+ /** @constant */
3576
+ kind: "gitlab-native";
3577
+ } | {
3578
+ /** @constant */
3579
+ kind: "github-project";
3580
+ projectNumber: string | number;
3581
+ fieldName: string;
3582
+ } | null;
3583
+ statusRules?: {
3584
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
3585
+ value: string;
3586
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3587
+ }[];
3588
+ flowFamilies?: string[];
3589
+ };
3590
+ };
3591
+ WorkflowRulesPreviewResponse: {
3592
+ current: {
3593
+ source: "github" | "gitlab";
3594
+ projectKey: string;
3595
+ labelRules: {
3596
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
3597
+ prefix: string;
3598
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3599
+ }[];
3600
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
3601
+ statusSource: {
3602
+ /** @constant */
3603
+ kind: "gitlab-native";
3604
+ } | {
3605
+ /** @constant */
3606
+ kind: "github-project";
3607
+ projectNumber: string | number;
3608
+ fieldName: string;
3609
+ } | null;
3610
+ statusRules: {
3611
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
3612
+ value: string;
3613
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3614
+ }[];
3615
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
3616
+ flowFamilies: string[];
3617
+ };
3618
+ proposed: {
3619
+ source: "github" | "gitlab";
3620
+ projectKey: string;
3621
+ labelRules: {
3622
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
3623
+ prefix: string;
3624
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3625
+ }[];
3626
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
3627
+ statusSource: {
3628
+ /** @constant */
3629
+ kind: "gitlab-native";
3630
+ } | {
3631
+ /** @constant */
3632
+ kind: "github-project";
3633
+ projectNumber: string | number;
3634
+ fieldName: string;
3635
+ } | null;
3636
+ statusRules: {
3637
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
3638
+ value: string;
3639
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3640
+ }[];
3641
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
3642
+ flowFamilies: string[];
3643
+ };
3644
+ stateDistribution: {
3645
+ before: {
3646
+ todo: string | number;
3647
+ doing: string | number;
3648
+ review: string | number;
3649
+ delivered: string | number;
3650
+ blocked: string | number;
3651
+ done: string | number;
3652
+ };
3653
+ after: {
3654
+ todo: string | number;
3655
+ doing: string | number;
3656
+ review: string | number;
3657
+ delivered: string | number;
3658
+ blocked: string | number;
3659
+ done: string | number;
3660
+ };
3661
+ };
3662
+ /** @description Open issues whose `workflow.state` changes, ≤ 200. */
3663
+ changedIssues: {
3664
+ number: string | number;
3665
+ title: string;
3666
+ before: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3667
+ after: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
3668
+ }[];
3669
+ /** @description True when `changedIssues` was capped at 200, or when the open-issue load itself was capped (the distribution then covers part of the tracker). */
3670
+ truncated: boolean;
3671
+ /** @description Send as `If-Match` on the workflow-rules PATCH with the SAME body as `patch`. */
3672
+ previewToken: string;
3673
+ };
2666
3674
  WorkflowRulesPut: {
2667
3675
  labelRules: {
2668
3676
  /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
@@ -2920,8 +3928,10 @@ export interface operations {
2920
3928
  mergedAt: string | null;
2921
3929
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
2922
3930
  mergedBy: string | null;
2923
- /** @description Branch merged INTO. The source side is `branch`. */
3931
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
2924
3932
  targetBranch: string | null;
3933
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
3934
+ sourceBranch: string | null;
2925
3935
  reviewRequestedAt: string | null;
2926
3936
  volume: {
2927
3937
  additions: string | number;
@@ -3179,8 +4189,10 @@ export interface operations {
3179
4189
  mergedAt: string | null;
3180
4190
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
3181
4191
  mergedBy: string | null;
3182
- /** @description Branch merged INTO. The source side is `branch`. */
4192
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
3183
4193
  targetBranch: string | null;
4194
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
4195
+ sourceBranch: string | null;
3184
4196
  reviewRequestedAt: string | null;
3185
4197
  volume: {
3186
4198
  additions: string | number;
@@ -3438,8 +4450,10 @@ export interface operations {
3438
4450
  mergedAt: string | null;
3439
4451
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
3440
4452
  mergedBy: string | null;
3441
- /** @description Branch merged INTO. The source side is `branch`. */
4453
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
3442
4454
  targetBranch: string | null;
4455
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
4456
+ sourceBranch: string | null;
3443
4457
  reviewRequestedAt: string | null;
3444
4458
  volume: {
3445
4459
  additions: string | number;
@@ -3753,8 +4767,10 @@ export interface operations {
3753
4767
  mergedAt: string | null;
3754
4768
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
3755
4769
  mergedBy: string | null;
3756
- /** @description Branch merged INTO. The source side is `branch`. */
4770
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
3757
4771
  targetBranch: string | null;
4772
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
4773
+ sourceBranch: string | null;
3758
4774
  reviewRequestedAt: string | null;
3759
4775
  volume: {
3760
4776
  additions: string | number;
@@ -4007,8 +5023,10 @@ export interface operations {
4007
5023
  mergedAt: string | null;
4008
5024
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
4009
5025
  mergedBy: string | null;
4010
- /** @description Branch merged INTO. The source side is `branch`. */
5026
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
4011
5027
  targetBranch: string | null;
5028
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
5029
+ sourceBranch: string | null;
4012
5030
  reviewRequestedAt: string | null;
4013
5031
  volume: {
4014
5032
  additions: string | number;
@@ -4261,8 +5279,10 @@ export interface operations {
4261
5279
  mergedAt: string | null;
4262
5280
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
4263
5281
  mergedBy: string | null;
4264
- /** @description Branch merged INTO. The source side is `branch`. */
5282
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
4265
5283
  targetBranch: string | null;
5284
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
5285
+ sourceBranch: string | null;
4266
5286
  reviewRequestedAt: string | null;
4267
5287
  volume: {
4268
5288
  additions: string | number;
@@ -5337,8 +6357,10 @@ export interface operations {
5337
6357
  severity: string | null;
5338
6358
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
5339
6359
  mergedBy: string | null;
5340
- /** @description Branch merged INTO. The source side is `branch`. */
6360
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
5341
6361
  targetBranch: string | null;
6362
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
6363
+ sourceBranch: string | null;
5342
6364
  /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
5343
6365
  applications: string[];
5344
6366
  number: string | number;
@@ -5445,8 +6467,10 @@ export interface operations {
5445
6467
  severity: string | null;
5446
6468
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
5447
6469
  mergedBy: string | null;
5448
- /** @description Branch merged INTO. The source side is `branch`. */
6470
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
5449
6471
  targetBranch: string | null;
6472
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
6473
+ sourceBranch: string | null;
5450
6474
  /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
5451
6475
  applications: string[];
5452
6476
  number: string | number;
@@ -5553,8 +6577,10 @@ export interface operations {
5553
6577
  severity: string | null;
5554
6578
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
5555
6579
  mergedBy: string | null;
5556
- /** @description Branch merged INTO. The source side is `branch`. */
6580
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
5557
6581
  targetBranch: string | null;
6582
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
6583
+ sourceBranch: string | null;
5558
6584
  /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
5559
6585
  applications: string[];
5560
6586
  number: string | number;
@@ -5754,8 +6780,10 @@ export interface operations {
5754
6780
  mergedAt: string | null;
5755
6781
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
5756
6782
  mergedBy: string | null;
5757
- /** @description Branch merged INTO. The source side is `branch`. */
6783
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
5758
6784
  targetBranch: string | null;
6785
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
6786
+ sourceBranch: string | null;
5759
6787
  reviewRequestedAt: string | null;
5760
6788
  volume: {
5761
6789
  additions: string | number;
@@ -6060,8 +7088,10 @@ export interface operations {
6060
7088
  mergedAt: string | null;
6061
7089
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
6062
7090
  mergedBy: string | null;
6063
- /** @description Branch merged INTO. The source side is `branch`. */
7091
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
6064
7092
  targetBranch: string | null;
7093
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
7094
+ sourceBranch: string | null;
6065
7095
  reviewRequestedAt: string | null;
6066
7096
  volume: {
6067
7097
  additions: string | number;
@@ -6366,8 +7396,10 @@ export interface operations {
6366
7396
  mergedAt: string | null;
6367
7397
  /** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
6368
7398
  mergedBy: string | null;
6369
- /** @description Branch merged INTO. The source side is `branch`. */
7399
+ /** @description Branch merged INTO. The source side is `sourceBranch`. */
6370
7400
  targetBranch: string | null;
7401
+ /** @description Branch the PR/MR comes FROM (GitLab `source_branch`, GitHub `head.ref`). A hint for a human or an LLM comparing evidence — never a link source: refs are never derived from branch names. null = the provider payload carried none. */
7402
+ sourceBranch: string | null;
6371
7403
  reviewRequestedAt: string | null;
6372
7404
  volume: {
6373
7405
  additions: string | number;
@@ -6689,7 +7721,10 @@ export interface operations {
6689
7721
  "patchV1ProjectsBySourceByProjectKeyDelivery-rules": {
6690
7722
  parameters: {
6691
7723
  query?: never;
6692
- header?: never;
7724
+ header?: {
7725
+ /** @description Preview token (sha256 hex) returned by the matching preview call. When present, the write is refused with 409 and nothing is written if the configuration changed since the preview or the body differs from the previewed one. Absent: the write proceeds as before. */
7726
+ "If-Match"?: string;
7727
+ };
6693
7728
  path: {
6694
7729
  source: string;
6695
7730
  projectKey: string;
@@ -6775,6 +7810,22 @@ export interface operations {
6775
7810
  };
6776
7811
  };
6777
7812
  };
7813
+ 409: {
7814
+ headers: {
7815
+ [name: string]: unknown;
7816
+ };
7817
+ content: {
7818
+ "application/json": {
7819
+ error: string;
7820
+ };
7821
+ "multipart/form-data": {
7822
+ error: string;
7823
+ };
7824
+ "text/plain": {
7825
+ error: string;
7826
+ };
7827
+ };
7828
+ };
6778
7829
  };
6779
7830
  };
6780
7831
  "getV1ApplicationsBySlugDelivery-rules": {
@@ -6856,7 +7907,10 @@ export interface operations {
6856
7907
  "patchV1ApplicationsBySlugDelivery-rules": {
6857
7908
  parameters: {
6858
7909
  query?: never;
6859
- header?: never;
7910
+ header?: {
7911
+ /** @description Preview token (sha256 hex) returned by the matching preview call. When present, the write is refused with 409 and nothing is written if the configuration changed since the preview or the body differs from the previewed one. Absent: the write proceeds as before. */
7912
+ "If-Match"?: string;
7913
+ };
6860
7914
  path: {
6861
7915
  slug: string;
6862
7916
  };
@@ -6942,16 +7996,32 @@ export interface operations {
6942
7996
  };
6943
7997
  };
6944
7998
  };
6945
- };
6946
- };
6947
- "getV1ProjectsBySourceByProjectKeyWorkflow-rules": {
6948
- parameters: {
6949
- query?: never;
6950
- header?: never;
6951
- path: {
6952
- source: string;
6953
- projectKey: string;
6954
- };
7999
+ 409: {
8000
+ headers: {
8001
+ [name: string]: unknown;
8002
+ };
8003
+ content: {
8004
+ "application/json": {
8005
+ error: string;
8006
+ };
8007
+ "multipart/form-data": {
8008
+ error: string;
8009
+ };
8010
+ "text/plain": {
8011
+ error: string;
8012
+ };
8013
+ };
8014
+ };
8015
+ };
8016
+ };
8017
+ "getV1ProjectsBySourceByProjectKeyWorkflow-rules": {
8018
+ parameters: {
8019
+ query?: never;
8020
+ header?: never;
8021
+ path: {
8022
+ source: string;
8023
+ projectKey: string;
8024
+ };
6955
8025
  cookie?: never;
6956
8026
  };
6957
8027
  requestBody?: never;
@@ -7230,6 +8300,228 @@ export interface operations {
7230
8300
  };
7231
8301
  };
7232
8302
  };
8303
+ "patchV1ProjectsBySourceByProjectKeyWorkflow-rules": {
8304
+ parameters: {
8305
+ query?: never;
8306
+ header?: {
8307
+ /** @description Preview token (sha256 hex) returned by the matching preview call. When present, the write is refused with 409 and nothing is written if the configuration changed since the preview or the body differs from the previewed one. Absent: the write proceeds as before. */
8308
+ "If-Match"?: string;
8309
+ };
8310
+ path: {
8311
+ source: string;
8312
+ projectKey: string;
8313
+ };
8314
+ cookie?: never;
8315
+ };
8316
+ requestBody: {
8317
+ content: {
8318
+ "application/json": {
8319
+ labelRules?: {
8320
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8321
+ prefix: string;
8322
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8323
+ }[];
8324
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8325
+ statusSource?: {
8326
+ /** @constant */
8327
+ kind: "gitlab-native";
8328
+ } | {
8329
+ /** @constant */
8330
+ kind: "github-project";
8331
+ projectNumber: string | number;
8332
+ fieldName: string;
8333
+ } | null;
8334
+ statusRules?: {
8335
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8336
+ value: string;
8337
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8338
+ }[];
8339
+ flowFamilies?: string[];
8340
+ };
8341
+ "multipart/form-data": {
8342
+ labelRules?: {
8343
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8344
+ prefix: string;
8345
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8346
+ }[];
8347
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8348
+ statusSource?: {
8349
+ /** @constant */
8350
+ kind: "gitlab-native";
8351
+ } | {
8352
+ /** @constant */
8353
+ kind: "github-project";
8354
+ projectNumber: string | number;
8355
+ fieldName: string;
8356
+ } | null;
8357
+ statusRules?: {
8358
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8359
+ value: string;
8360
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8361
+ }[];
8362
+ flowFamilies?: string[];
8363
+ };
8364
+ "text/plain": {
8365
+ labelRules?: {
8366
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8367
+ prefix: string;
8368
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8369
+ }[];
8370
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8371
+ statusSource?: {
8372
+ /** @constant */
8373
+ kind: "gitlab-native";
8374
+ } | {
8375
+ /** @constant */
8376
+ kind: "github-project";
8377
+ projectNumber: string | number;
8378
+ fieldName: string;
8379
+ } | null;
8380
+ statusRules?: {
8381
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8382
+ value: string;
8383
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8384
+ }[];
8385
+ flowFamilies?: string[];
8386
+ };
8387
+ };
8388
+ };
8389
+ responses: {
8390
+ 200: {
8391
+ headers: {
8392
+ [name: string]: unknown;
8393
+ };
8394
+ content: {
8395
+ "application/json": {
8396
+ source: "github" | "gitlab";
8397
+ projectKey: string;
8398
+ labelRules: {
8399
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8400
+ prefix: string;
8401
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8402
+ }[];
8403
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8404
+ statusSource: {
8405
+ /** @constant */
8406
+ kind: "gitlab-native";
8407
+ } | {
8408
+ /** @constant */
8409
+ kind: "github-project";
8410
+ projectNumber: string | number;
8411
+ fieldName: string;
8412
+ } | null;
8413
+ statusRules: {
8414
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8415
+ value: string;
8416
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8417
+ }[];
8418
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
8419
+ flowFamilies: string[];
8420
+ };
8421
+ "multipart/form-data": {
8422
+ source: "github" | "gitlab";
8423
+ projectKey: string;
8424
+ labelRules: {
8425
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8426
+ prefix: string;
8427
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8428
+ }[];
8429
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8430
+ statusSource: {
8431
+ /** @constant */
8432
+ kind: "gitlab-native";
8433
+ } | {
8434
+ /** @constant */
8435
+ kind: "github-project";
8436
+ projectNumber: string | number;
8437
+ fieldName: string;
8438
+ } | null;
8439
+ statusRules: {
8440
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8441
+ value: string;
8442
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8443
+ }[];
8444
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
8445
+ flowFamilies: string[];
8446
+ };
8447
+ "text/plain": {
8448
+ source: "github" | "gitlab";
8449
+ projectKey: string;
8450
+ labelRules: {
8451
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
8452
+ prefix: string;
8453
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8454
+ }[];
8455
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
8456
+ statusSource: {
8457
+ /** @constant */
8458
+ kind: "gitlab-native";
8459
+ } | {
8460
+ /** @constant */
8461
+ kind: "github-project";
8462
+ projectNumber: string | number;
8463
+ fieldName: string;
8464
+ } | null;
8465
+ statusRules: {
8466
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
8467
+ value: string;
8468
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
8469
+ }[];
8470
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
8471
+ flowFamilies: string[];
8472
+ };
8473
+ };
8474
+ };
8475
+ 400: {
8476
+ headers: {
8477
+ [name: string]: unknown;
8478
+ };
8479
+ content: {
8480
+ "application/json": {
8481
+ error: string;
8482
+ };
8483
+ "multipart/form-data": {
8484
+ error: string;
8485
+ };
8486
+ "text/plain": {
8487
+ error: string;
8488
+ };
8489
+ };
8490
+ };
8491
+ 403: {
8492
+ headers: {
8493
+ [name: string]: unknown;
8494
+ };
8495
+ content: {
8496
+ "application/json": {
8497
+ error: string;
8498
+ };
8499
+ "multipart/form-data": {
8500
+ error: string;
8501
+ };
8502
+ "text/plain": {
8503
+ error: string;
8504
+ };
8505
+ };
8506
+ };
8507
+ 409: {
8508
+ headers: {
8509
+ [name: string]: unknown;
8510
+ };
8511
+ content: {
8512
+ "application/json": {
8513
+ error: string;
8514
+ };
8515
+ "multipart/form-data": {
8516
+ error: string;
8517
+ };
8518
+ "text/plain": {
8519
+ error: string;
8520
+ };
8521
+ };
8522
+ };
8523
+ };
8524
+ };
7233
8525
  getV1Projects: {
7234
8526
  parameters: {
7235
8527
  query?: never;
@@ -7964,7 +9256,10 @@ export interface operations {
7964
9256
  postV1IdentitiesByIdAliases: {
7965
9257
  parameters: {
7966
9258
  query?: never;
7967
- header?: never;
9259
+ header?: {
9260
+ /** @description Preview token (sha256 hex) returned by the matching preview call. When present, the write is refused with 409 and nothing is written if the configuration changed since the preview or the body differs from the previewed one. Absent: the write proceeds as before. */
9261
+ "If-Match"?: string;
9262
+ };
7968
9263
  path: {
7969
9264
  id: string;
7970
9265
  };
@@ -8071,12 +9366,31 @@ export interface operations {
8071
9366
  };
8072
9367
  };
8073
9368
  };
9369
+ 409: {
9370
+ headers: {
9371
+ [name: string]: unknown;
9372
+ };
9373
+ content: {
9374
+ "application/json": {
9375
+ error: string;
9376
+ };
9377
+ "multipart/form-data": {
9378
+ error: string;
9379
+ };
9380
+ "text/plain": {
9381
+ error: string;
9382
+ };
9383
+ };
9384
+ };
8074
9385
  };
8075
9386
  };
8076
9387
  deleteV1IdentitiesByIdAliasesByProviderByLogin: {
8077
9388
  parameters: {
8078
9389
  query?: never;
8079
- header?: never;
9390
+ header?: {
9391
+ /** @description Preview token (sha256 hex) returned by the matching preview call. When present, the write is refused with 409 and nothing is written if the configuration changed since the preview or the body differs from the previewed one. Absent: the write proceeds as before. */
9392
+ "If-Match"?: string;
9393
+ };
8080
9394
  path: {
8081
9395
  id: string;
8082
9396
  provider: string;
@@ -8124,13 +9438,29 @@ export interface operations {
8124
9438
  };
8125
9439
  };
8126
9440
  };
8127
- };
8128
- };
8129
- getV1Applications: {
8130
- parameters: {
8131
- query?: never;
8132
- header?: never;
8133
- path?: never;
9441
+ 409: {
9442
+ headers: {
9443
+ [name: string]: unknown;
9444
+ };
9445
+ content: {
9446
+ "application/json": {
9447
+ error: string;
9448
+ };
9449
+ "multipart/form-data": {
9450
+ error: string;
9451
+ };
9452
+ "text/plain": {
9453
+ error: string;
9454
+ };
9455
+ };
9456
+ };
9457
+ };
9458
+ };
9459
+ getV1Applications: {
9460
+ parameters: {
9461
+ query?: never;
9462
+ header?: never;
9463
+ path?: never;
8134
9464
  cookie?: never;
8135
9465
  };
8136
9466
  requestBody?: never;
@@ -8201,4 +9531,2375 @@ export interface operations {
8201
9531
  };
8202
9532
  };
8203
9533
  };
9534
+ getV1ReviewItems: {
9535
+ parameters: {
9536
+ query?: {
9537
+ from?: string;
9538
+ to?: string;
9539
+ kinds?: string;
9540
+ includeSeen?: string;
9541
+ countsOnly?: string;
9542
+ };
9543
+ header?: never;
9544
+ path?: never;
9545
+ cookie?: never;
9546
+ };
9547
+ requestBody?: never;
9548
+ responses: {
9549
+ 200: {
9550
+ headers: {
9551
+ [name: string]: unknown;
9552
+ };
9553
+ content: {
9554
+ "application/json": {
9555
+ window: {
9556
+ from: string;
9557
+ to: string;
9558
+ };
9559
+ counts: {
9560
+ ambiguous: number;
9561
+ uncertain: number;
9562
+ unresolved: number;
9563
+ undelivered: number;
9564
+ unassigned: number;
9565
+ "workflow-conflict": number;
9566
+ "unmapped-status": number;
9567
+ };
9568
+ truncated: {
9569
+ ambiguous: boolean;
9570
+ uncertain: boolean;
9571
+ unresolved: boolean;
9572
+ undelivered: boolean;
9573
+ unassigned: boolean;
9574
+ "workflow-conflict": boolean;
9575
+ "unmapped-status": boolean;
9576
+ };
9577
+ unseen: number;
9578
+ unseenMentions: number;
9579
+ legacyUnclassified: number;
9580
+ items: {
9581
+ key: string;
9582
+ kind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
9583
+ fingerprint: string;
9584
+ title: string;
9585
+ detail: string;
9586
+ occurredAt: string;
9587
+ activity: {
9588
+ id: string;
9589
+ provider: "github" | "gitlab";
9590
+ repo: string;
9591
+ type: string;
9592
+ number: string;
9593
+ title: string;
9594
+ url: string;
9595
+ author: string | null;
9596
+ } | null;
9597
+ target: {
9598
+ source: "github" | "gitlab";
9599
+ projectKey: string;
9600
+ number: string | number;
9601
+ url: string | null;
9602
+ } | null;
9603
+ evidence: string | null;
9604
+ error: string | null;
9605
+ candidates: {
9606
+ id: string;
9607
+ provider: "github" | "gitlab";
9608
+ repo: string;
9609
+ type: string;
9610
+ number: string;
9611
+ title: string;
9612
+ url: string;
9613
+ author: string | null;
9614
+ attributable: boolean;
9615
+ snippets: {
9616
+ label: string;
9617
+ text: string;
9618
+ }[];
9619
+ }[];
9620
+ confidence: number | null;
9621
+ linkKind: string | null;
9622
+ snippets: {
9623
+ label: string;
9624
+ text: string;
9625
+ }[];
9626
+ resyncRepo: string | null;
9627
+ seen: {
9628
+ by: string;
9629
+ at: string;
9630
+ } | null;
9631
+ mention: boolean;
9632
+ quiet: boolean;
9633
+ }[];
9634
+ };
9635
+ "multipart/form-data": {
9636
+ window: {
9637
+ from: string;
9638
+ to: string;
9639
+ };
9640
+ counts: {
9641
+ ambiguous: number;
9642
+ uncertain: number;
9643
+ unresolved: number;
9644
+ undelivered: number;
9645
+ unassigned: number;
9646
+ "workflow-conflict": number;
9647
+ "unmapped-status": number;
9648
+ };
9649
+ truncated: {
9650
+ ambiguous: boolean;
9651
+ uncertain: boolean;
9652
+ unresolved: boolean;
9653
+ undelivered: boolean;
9654
+ unassigned: boolean;
9655
+ "workflow-conflict": boolean;
9656
+ "unmapped-status": boolean;
9657
+ };
9658
+ unseen: number;
9659
+ unseenMentions: number;
9660
+ legacyUnclassified: number;
9661
+ items: {
9662
+ key: string;
9663
+ kind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
9664
+ fingerprint: string;
9665
+ title: string;
9666
+ detail: string;
9667
+ occurredAt: string;
9668
+ activity: {
9669
+ id: string;
9670
+ provider: "github" | "gitlab";
9671
+ repo: string;
9672
+ type: string;
9673
+ number: string;
9674
+ title: string;
9675
+ url: string;
9676
+ author: string | null;
9677
+ } | null;
9678
+ target: {
9679
+ source: "github" | "gitlab";
9680
+ projectKey: string;
9681
+ number: string | number;
9682
+ url: string | null;
9683
+ } | null;
9684
+ evidence: string | null;
9685
+ error: string | null;
9686
+ candidates: {
9687
+ id: string;
9688
+ provider: "github" | "gitlab";
9689
+ repo: string;
9690
+ type: string;
9691
+ number: string;
9692
+ title: string;
9693
+ url: string;
9694
+ author: string | null;
9695
+ attributable: boolean;
9696
+ snippets: {
9697
+ label: string;
9698
+ text: string;
9699
+ }[];
9700
+ }[];
9701
+ confidence: number | null;
9702
+ linkKind: string | null;
9703
+ snippets: {
9704
+ label: string;
9705
+ text: string;
9706
+ }[];
9707
+ resyncRepo: string | null;
9708
+ seen: {
9709
+ by: string;
9710
+ at: string;
9711
+ } | null;
9712
+ mention: boolean;
9713
+ quiet: boolean;
9714
+ }[];
9715
+ };
9716
+ "text/plain": {
9717
+ window: {
9718
+ from: string;
9719
+ to: string;
9720
+ };
9721
+ counts: {
9722
+ ambiguous: number;
9723
+ uncertain: number;
9724
+ unresolved: number;
9725
+ undelivered: number;
9726
+ unassigned: number;
9727
+ "workflow-conflict": number;
9728
+ "unmapped-status": number;
9729
+ };
9730
+ truncated: {
9731
+ ambiguous: boolean;
9732
+ uncertain: boolean;
9733
+ unresolved: boolean;
9734
+ undelivered: boolean;
9735
+ unassigned: boolean;
9736
+ "workflow-conflict": boolean;
9737
+ "unmapped-status": boolean;
9738
+ };
9739
+ unseen: number;
9740
+ unseenMentions: number;
9741
+ legacyUnclassified: number;
9742
+ items: {
9743
+ key: string;
9744
+ kind: "ambiguous" | "uncertain" | "unresolved" | "undelivered" | "unassigned" | "workflow-conflict" | "unmapped-status";
9745
+ fingerprint: string;
9746
+ title: string;
9747
+ detail: string;
9748
+ occurredAt: string;
9749
+ activity: {
9750
+ id: string;
9751
+ provider: "github" | "gitlab";
9752
+ repo: string;
9753
+ type: string;
9754
+ number: string;
9755
+ title: string;
9756
+ url: string;
9757
+ author: string | null;
9758
+ } | null;
9759
+ target: {
9760
+ source: "github" | "gitlab";
9761
+ projectKey: string;
9762
+ number: string | number;
9763
+ url: string | null;
9764
+ } | null;
9765
+ evidence: string | null;
9766
+ error: string | null;
9767
+ candidates: {
9768
+ id: string;
9769
+ provider: "github" | "gitlab";
9770
+ repo: string;
9771
+ type: string;
9772
+ number: string;
9773
+ title: string;
9774
+ url: string;
9775
+ author: string | null;
9776
+ attributable: boolean;
9777
+ snippets: {
9778
+ label: string;
9779
+ text: string;
9780
+ }[];
9781
+ }[];
9782
+ confidence: number | null;
9783
+ linkKind: string | null;
9784
+ snippets: {
9785
+ label: string;
9786
+ text: string;
9787
+ }[];
9788
+ resyncRepo: string | null;
9789
+ seen: {
9790
+ by: string;
9791
+ at: string;
9792
+ } | null;
9793
+ mention: boolean;
9794
+ quiet: boolean;
9795
+ }[];
9796
+ };
9797
+ };
9798
+ };
9799
+ 400: {
9800
+ headers: {
9801
+ [name: string]: unknown;
9802
+ };
9803
+ content: {
9804
+ "application/json": {
9805
+ error: string;
9806
+ };
9807
+ "multipart/form-data": {
9808
+ error: string;
9809
+ };
9810
+ "text/plain": {
9811
+ error: string;
9812
+ };
9813
+ };
9814
+ };
9815
+ 403: {
9816
+ headers: {
9817
+ [name: string]: unknown;
9818
+ };
9819
+ content: {
9820
+ "application/json": {
9821
+ error: string;
9822
+ };
9823
+ "multipart/form-data": {
9824
+ error: string;
9825
+ };
9826
+ "text/plain": {
9827
+ error: string;
9828
+ };
9829
+ };
9830
+ };
9831
+ };
9832
+ };
9833
+ postV1ReviewItemsByKeySeen: {
9834
+ parameters: {
9835
+ query?: never;
9836
+ header?: never;
9837
+ path: {
9838
+ key: string;
9839
+ };
9840
+ cookie?: never;
9841
+ };
9842
+ requestBody: {
9843
+ content: {
9844
+ "application/json": {
9845
+ fingerprint: string;
9846
+ };
9847
+ "multipart/form-data": {
9848
+ fingerprint: string;
9849
+ };
9850
+ "text/plain": {
9851
+ fingerprint: string;
9852
+ };
9853
+ };
9854
+ };
9855
+ responses: {
9856
+ 204: {
9857
+ headers: {
9858
+ [name: string]: unknown;
9859
+ };
9860
+ content?: never;
9861
+ };
9862
+ 400: {
9863
+ headers: {
9864
+ [name: string]: unknown;
9865
+ };
9866
+ content: {
9867
+ "application/json": {
9868
+ error: string;
9869
+ };
9870
+ "multipart/form-data": {
9871
+ error: string;
9872
+ };
9873
+ "text/plain": {
9874
+ error: string;
9875
+ };
9876
+ };
9877
+ };
9878
+ 403: {
9879
+ headers: {
9880
+ [name: string]: unknown;
9881
+ };
9882
+ content: {
9883
+ "application/json": {
9884
+ error: string;
9885
+ };
9886
+ "multipart/form-data": {
9887
+ error: string;
9888
+ };
9889
+ "text/plain": {
9890
+ error: string;
9891
+ };
9892
+ };
9893
+ };
9894
+ };
9895
+ };
9896
+ deleteV1ReviewItemsByKeySeen: {
9897
+ parameters: {
9898
+ query?: never;
9899
+ header?: never;
9900
+ path: {
9901
+ key: string;
9902
+ };
9903
+ cookie?: never;
9904
+ };
9905
+ requestBody?: never;
9906
+ responses: {
9907
+ 204: {
9908
+ headers: {
9909
+ [name: string]: unknown;
9910
+ };
9911
+ content?: never;
9912
+ };
9913
+ 403: {
9914
+ headers: {
9915
+ [name: string]: unknown;
9916
+ };
9917
+ content: {
9918
+ "application/json": {
9919
+ error: string;
9920
+ };
9921
+ "multipart/form-data": {
9922
+ error: string;
9923
+ };
9924
+ "text/plain": {
9925
+ error: string;
9926
+ };
9927
+ };
9928
+ };
9929
+ };
9930
+ };
9931
+ postV1Sync: {
9932
+ parameters: {
9933
+ query?: {
9934
+ repo?: string;
9935
+ days?: string;
9936
+ backfill?: string;
9937
+ };
9938
+ header?: never;
9939
+ path?: never;
9940
+ cookie?: never;
9941
+ };
9942
+ requestBody?: never;
9943
+ responses: {
9944
+ 202: {
9945
+ headers: {
9946
+ [name: string]: unknown;
9947
+ };
9948
+ content: {
9949
+ "application/json": {
9950
+ /** @constant */
9951
+ status: "accepted";
9952
+ repoFilter: string;
9953
+ sinceDays?: string | number;
9954
+ };
9955
+ "multipart/form-data": {
9956
+ /** @constant */
9957
+ status: "accepted";
9958
+ repoFilter: string;
9959
+ sinceDays?: string | number;
9960
+ };
9961
+ "text/plain": {
9962
+ /** @constant */
9963
+ status: "accepted";
9964
+ repoFilter: string;
9965
+ sinceDays?: string | number;
9966
+ };
9967
+ };
9968
+ };
9969
+ 400: {
9970
+ headers: {
9971
+ [name: string]: unknown;
9972
+ };
9973
+ content: {
9974
+ "application/json": {
9975
+ error: string;
9976
+ };
9977
+ "multipart/form-data": {
9978
+ error: string;
9979
+ };
9980
+ "text/plain": {
9981
+ error: string;
9982
+ };
9983
+ };
9984
+ };
9985
+ 403: {
9986
+ headers: {
9987
+ [name: string]: unknown;
9988
+ };
9989
+ content: {
9990
+ "application/json": {
9991
+ error: string;
9992
+ };
9993
+ "multipart/form-data": {
9994
+ error: string;
9995
+ };
9996
+ "text/plain": {
9997
+ error: string;
9998
+ };
9999
+ };
10000
+ };
10001
+ 404: {
10002
+ headers: {
10003
+ [name: string]: unknown;
10004
+ };
10005
+ content: {
10006
+ "application/json": {
10007
+ error: string;
10008
+ };
10009
+ "multipart/form-data": {
10010
+ error: string;
10011
+ };
10012
+ "text/plain": {
10013
+ error: string;
10014
+ };
10015
+ };
10016
+ };
10017
+ };
10018
+ };
10019
+ "postV1PreviewsDelivery-rules": {
10020
+ parameters: {
10021
+ query?: never;
10022
+ header?: never;
10023
+ path?: never;
10024
+ cookie?: never;
10025
+ };
10026
+ requestBody: {
10027
+ content: {
10028
+ "application/json": {
10029
+ target: {
10030
+ /** @constant */
10031
+ kind: "tracker";
10032
+ source: "github" | "gitlab";
10033
+ projectKey: string;
10034
+ } | {
10035
+ /** @constant */
10036
+ kind: "application";
10037
+ slug: string;
10038
+ };
10039
+ patch: {
10040
+ deliveryLabels?: string[];
10041
+ openedLabels?: string[];
10042
+ deliveryStatuses?: string[];
10043
+ openedStatuses?: string[];
10044
+ };
10045
+ /** @description Window start (ISO date or datetime). */
10046
+ from: string;
10047
+ /** @description Window end (ISO date or datetime). */
10048
+ to: string;
10049
+ /** @description Identity id for the scoped view (attribution changes, i.e. that person's invoice). Absent: `diff.scoped` is null. */
10050
+ identity?: string | number;
10051
+ };
10052
+ "multipart/form-data": {
10053
+ target: {
10054
+ /** @constant */
10055
+ kind: "tracker";
10056
+ source: "github" | "gitlab";
10057
+ projectKey: string;
10058
+ } | {
10059
+ /** @constant */
10060
+ kind: "application";
10061
+ slug: string;
10062
+ };
10063
+ patch: {
10064
+ deliveryLabels?: string[];
10065
+ openedLabels?: string[];
10066
+ deliveryStatuses?: string[];
10067
+ openedStatuses?: string[];
10068
+ };
10069
+ /** @description Window start (ISO date or datetime). */
10070
+ from: string;
10071
+ /** @description Window end (ISO date or datetime). */
10072
+ to: string;
10073
+ /** @description Identity id for the scoped view (attribution changes, i.e. that person's invoice). Absent: `diff.scoped` is null. */
10074
+ identity?: string | number;
10075
+ };
10076
+ "text/plain": {
10077
+ target: {
10078
+ /** @constant */
10079
+ kind: "tracker";
10080
+ source: "github" | "gitlab";
10081
+ projectKey: string;
10082
+ } | {
10083
+ /** @constant */
10084
+ kind: "application";
10085
+ slug: string;
10086
+ };
10087
+ patch: {
10088
+ deliveryLabels?: string[];
10089
+ openedLabels?: string[];
10090
+ deliveryStatuses?: string[];
10091
+ openedStatuses?: string[];
10092
+ };
10093
+ /** @description Window start (ISO date or datetime). */
10094
+ from: string;
10095
+ /** @description Window end (ISO date or datetime). */
10096
+ to: string;
10097
+ /** @description Identity id for the scoped view (attribution changes, i.e. that person's invoice). Absent: `diff.scoped` is null. */
10098
+ identity?: string | number;
10099
+ };
10100
+ };
10101
+ };
10102
+ responses: {
10103
+ 200: {
10104
+ headers: {
10105
+ [name: string]: unknown;
10106
+ };
10107
+ content: {
10108
+ "application/json": {
10109
+ current: {
10110
+ source: "github" | "gitlab";
10111
+ projectKey: string;
10112
+ deliveryLabels: string[];
10113
+ openedLabels: string[];
10114
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10115
+ deliveryStatuses: string[];
10116
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10117
+ openedStatuses: string[];
10118
+ updatedAt: string | null;
10119
+ } | {
10120
+ applicationSlug: string;
10121
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10122
+ deliveryLabels: string[];
10123
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10124
+ openedLabels: string[];
10125
+ updatedAt: string | null;
10126
+ };
10127
+ proposed: {
10128
+ source: "github" | "gitlab";
10129
+ projectKey: string;
10130
+ deliveryLabels: string[];
10131
+ openedLabels: string[];
10132
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10133
+ deliveryStatuses: string[];
10134
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10135
+ openedStatuses: string[];
10136
+ updatedAt: string | null;
10137
+ } | {
10138
+ applicationSlug: string;
10139
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10140
+ deliveryLabels: string[];
10141
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10142
+ openedLabels: string[];
10143
+ updatedAt: string | null;
10144
+ };
10145
+ diff: {
10146
+ unscoped: {
10147
+ appeared: {
10148
+ kind: "issue" | "standalone";
10149
+ /** @description `${source}:${projectKey}:${number}` */
10150
+ key: string;
10151
+ title: string;
10152
+ url: string;
10153
+ before: {
10154
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10155
+ deliveredAt: string | null;
10156
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10157
+ attribution: string | null;
10158
+ } | null;
10159
+ after: {
10160
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10161
+ deliveredAt: string | null;
10162
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10163
+ attribution: string | null;
10164
+ } | null;
10165
+ }[];
10166
+ disappeared: {
10167
+ kind: "issue" | "standalone";
10168
+ /** @description `${source}:${projectKey}:${number}` */
10169
+ key: string;
10170
+ title: string;
10171
+ url: string;
10172
+ before: {
10173
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10174
+ deliveredAt: string | null;
10175
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10176
+ attribution: string | null;
10177
+ } | null;
10178
+ after: {
10179
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10180
+ deliveredAt: string | null;
10181
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10182
+ attribution: string | null;
10183
+ } | null;
10184
+ }[];
10185
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10186
+ movedMonth: {
10187
+ kind: "issue" | "standalone";
10188
+ /** @description `${source}:${projectKey}:${number}` */
10189
+ key: string;
10190
+ title: string;
10191
+ url: string;
10192
+ before: {
10193
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10194
+ deliveredAt: string | null;
10195
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10196
+ attribution: string | null;
10197
+ } | null;
10198
+ after: {
10199
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10200
+ deliveredAt: string | null;
10201
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10202
+ attribution: string | null;
10203
+ } | null;
10204
+ }[];
10205
+ /** @description Only meaningful on a scoped run. */
10206
+ attributionChanged: {
10207
+ kind: "issue" | "standalone";
10208
+ /** @description `${source}:${projectKey}:${number}` */
10209
+ key: string;
10210
+ title: string;
10211
+ url: string;
10212
+ before: {
10213
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10214
+ deliveredAt: string | null;
10215
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10216
+ attribution: string | null;
10217
+ } | null;
10218
+ after: {
10219
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10220
+ deliveredAt: string | null;
10221
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10222
+ attribution: string | null;
10223
+ } | null;
10224
+ }[];
10225
+ totals: {
10226
+ before: {
10227
+ issues: string | number;
10228
+ standalone: string | number;
10229
+ };
10230
+ after: {
10231
+ issues: string | number;
10232
+ standalone: string | number;
10233
+ };
10234
+ };
10235
+ };
10236
+ scoped: {
10237
+ appeared: {
10238
+ kind: "issue" | "standalone";
10239
+ /** @description `${source}:${projectKey}:${number}` */
10240
+ key: string;
10241
+ title: string;
10242
+ url: string;
10243
+ before: {
10244
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10245
+ deliveredAt: string | null;
10246
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10247
+ attribution: string | null;
10248
+ } | null;
10249
+ after: {
10250
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10251
+ deliveredAt: string | null;
10252
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10253
+ attribution: string | null;
10254
+ } | null;
10255
+ }[];
10256
+ disappeared: {
10257
+ kind: "issue" | "standalone";
10258
+ /** @description `${source}:${projectKey}:${number}` */
10259
+ key: string;
10260
+ title: string;
10261
+ url: string;
10262
+ before: {
10263
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10264
+ deliveredAt: string | null;
10265
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10266
+ attribution: string | null;
10267
+ } | null;
10268
+ after: {
10269
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10270
+ deliveredAt: string | null;
10271
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10272
+ attribution: string | null;
10273
+ } | null;
10274
+ }[];
10275
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10276
+ movedMonth: {
10277
+ kind: "issue" | "standalone";
10278
+ /** @description `${source}:${projectKey}:${number}` */
10279
+ key: string;
10280
+ title: string;
10281
+ url: string;
10282
+ before: {
10283
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10284
+ deliveredAt: string | null;
10285
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10286
+ attribution: string | null;
10287
+ } | null;
10288
+ after: {
10289
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10290
+ deliveredAt: string | null;
10291
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10292
+ attribution: string | null;
10293
+ } | null;
10294
+ }[];
10295
+ /** @description Only meaningful on a scoped run. */
10296
+ attributionChanged: {
10297
+ kind: "issue" | "standalone";
10298
+ /** @description `${source}:${projectKey}:${number}` */
10299
+ key: string;
10300
+ title: string;
10301
+ url: string;
10302
+ before: {
10303
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10304
+ deliveredAt: string | null;
10305
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10306
+ attribution: string | null;
10307
+ } | null;
10308
+ after: {
10309
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10310
+ deliveredAt: string | null;
10311
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10312
+ attribution: string | null;
10313
+ } | null;
10314
+ }[];
10315
+ totals: {
10316
+ before: {
10317
+ issues: string | number;
10318
+ standalone: string | number;
10319
+ };
10320
+ after: {
10321
+ issues: string | number;
10322
+ standalone: string | number;
10323
+ };
10324
+ };
10325
+ } | null;
10326
+ };
10327
+ /** @description Send as `If-Match` on the matching PATCH with the SAME body as `patch`. */
10328
+ previewToken: string;
10329
+ /** @description True when either CRA run (before or after, issues or standalone) was capped — the diff then covers only part of the window. */
10330
+ truncated: boolean;
10331
+ };
10332
+ "multipart/form-data": {
10333
+ current: {
10334
+ source: "github" | "gitlab";
10335
+ projectKey: string;
10336
+ deliveryLabels: string[];
10337
+ openedLabels: string[];
10338
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10339
+ deliveryStatuses: string[];
10340
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10341
+ openedStatuses: string[];
10342
+ updatedAt: string | null;
10343
+ } | {
10344
+ applicationSlug: string;
10345
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10346
+ deliveryLabels: string[];
10347
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10348
+ openedLabels: string[];
10349
+ updatedAt: string | null;
10350
+ };
10351
+ proposed: {
10352
+ source: "github" | "gitlab";
10353
+ projectKey: string;
10354
+ deliveryLabels: string[];
10355
+ openedLabels: string[];
10356
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10357
+ deliveryStatuses: string[];
10358
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10359
+ openedStatuses: string[];
10360
+ updatedAt: string | null;
10361
+ } | {
10362
+ applicationSlug: string;
10363
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10364
+ deliveryLabels: string[];
10365
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10366
+ openedLabels: string[];
10367
+ updatedAt: string | null;
10368
+ };
10369
+ diff: {
10370
+ unscoped: {
10371
+ appeared: {
10372
+ kind: "issue" | "standalone";
10373
+ /** @description `${source}:${projectKey}:${number}` */
10374
+ key: string;
10375
+ title: string;
10376
+ url: string;
10377
+ before: {
10378
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10379
+ deliveredAt: string | null;
10380
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10381
+ attribution: string | null;
10382
+ } | null;
10383
+ after: {
10384
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10385
+ deliveredAt: string | null;
10386
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10387
+ attribution: string | null;
10388
+ } | null;
10389
+ }[];
10390
+ disappeared: {
10391
+ kind: "issue" | "standalone";
10392
+ /** @description `${source}:${projectKey}:${number}` */
10393
+ key: string;
10394
+ title: string;
10395
+ url: string;
10396
+ before: {
10397
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10398
+ deliveredAt: string | null;
10399
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10400
+ attribution: string | null;
10401
+ } | null;
10402
+ after: {
10403
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10404
+ deliveredAt: string | null;
10405
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10406
+ attribution: string | null;
10407
+ } | null;
10408
+ }[];
10409
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10410
+ movedMonth: {
10411
+ kind: "issue" | "standalone";
10412
+ /** @description `${source}:${projectKey}:${number}` */
10413
+ key: string;
10414
+ title: string;
10415
+ url: string;
10416
+ before: {
10417
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10418
+ deliveredAt: string | null;
10419
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10420
+ attribution: string | null;
10421
+ } | null;
10422
+ after: {
10423
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10424
+ deliveredAt: string | null;
10425
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10426
+ attribution: string | null;
10427
+ } | null;
10428
+ }[];
10429
+ /** @description Only meaningful on a scoped run. */
10430
+ attributionChanged: {
10431
+ kind: "issue" | "standalone";
10432
+ /** @description `${source}:${projectKey}:${number}` */
10433
+ key: string;
10434
+ title: string;
10435
+ url: string;
10436
+ before: {
10437
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10438
+ deliveredAt: string | null;
10439
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10440
+ attribution: string | null;
10441
+ } | null;
10442
+ after: {
10443
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10444
+ deliveredAt: string | null;
10445
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10446
+ attribution: string | null;
10447
+ } | null;
10448
+ }[];
10449
+ totals: {
10450
+ before: {
10451
+ issues: string | number;
10452
+ standalone: string | number;
10453
+ };
10454
+ after: {
10455
+ issues: string | number;
10456
+ standalone: string | number;
10457
+ };
10458
+ };
10459
+ };
10460
+ scoped: {
10461
+ appeared: {
10462
+ kind: "issue" | "standalone";
10463
+ /** @description `${source}:${projectKey}:${number}` */
10464
+ key: string;
10465
+ title: string;
10466
+ url: string;
10467
+ before: {
10468
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10469
+ deliveredAt: string | null;
10470
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10471
+ attribution: string | null;
10472
+ } | null;
10473
+ after: {
10474
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10475
+ deliveredAt: string | null;
10476
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10477
+ attribution: string | null;
10478
+ } | null;
10479
+ }[];
10480
+ disappeared: {
10481
+ kind: "issue" | "standalone";
10482
+ /** @description `${source}:${projectKey}:${number}` */
10483
+ key: string;
10484
+ title: string;
10485
+ url: string;
10486
+ before: {
10487
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10488
+ deliveredAt: string | null;
10489
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10490
+ attribution: string | null;
10491
+ } | null;
10492
+ after: {
10493
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10494
+ deliveredAt: string | null;
10495
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10496
+ attribution: string | null;
10497
+ } | null;
10498
+ }[];
10499
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10500
+ movedMonth: {
10501
+ kind: "issue" | "standalone";
10502
+ /** @description `${source}:${projectKey}:${number}` */
10503
+ key: string;
10504
+ title: string;
10505
+ url: string;
10506
+ before: {
10507
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10508
+ deliveredAt: string | null;
10509
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10510
+ attribution: string | null;
10511
+ } | null;
10512
+ after: {
10513
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10514
+ deliveredAt: string | null;
10515
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10516
+ attribution: string | null;
10517
+ } | null;
10518
+ }[];
10519
+ /** @description Only meaningful on a scoped run. */
10520
+ attributionChanged: {
10521
+ kind: "issue" | "standalone";
10522
+ /** @description `${source}:${projectKey}:${number}` */
10523
+ key: string;
10524
+ title: string;
10525
+ url: string;
10526
+ before: {
10527
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10528
+ deliveredAt: string | null;
10529
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10530
+ attribution: string | null;
10531
+ } | null;
10532
+ after: {
10533
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10534
+ deliveredAt: string | null;
10535
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10536
+ attribution: string | null;
10537
+ } | null;
10538
+ }[];
10539
+ totals: {
10540
+ before: {
10541
+ issues: string | number;
10542
+ standalone: string | number;
10543
+ };
10544
+ after: {
10545
+ issues: string | number;
10546
+ standalone: string | number;
10547
+ };
10548
+ };
10549
+ } | null;
10550
+ };
10551
+ /** @description Send as `If-Match` on the matching PATCH with the SAME body as `patch`. */
10552
+ previewToken: string;
10553
+ /** @description True when either CRA run (before or after, issues or standalone) was capped — the diff then covers only part of the window. */
10554
+ truncated: boolean;
10555
+ };
10556
+ "text/plain": {
10557
+ current: {
10558
+ source: "github" | "gitlab";
10559
+ projectKey: string;
10560
+ deliveryLabels: string[];
10561
+ openedLabels: string[];
10562
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10563
+ deliveryStatuses: string[];
10564
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10565
+ openedStatuses: string[];
10566
+ updatedAt: string | null;
10567
+ } | {
10568
+ applicationSlug: string;
10569
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10570
+ deliveryLabels: string[];
10571
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10572
+ openedLabels: string[];
10573
+ updatedAt: string | null;
10574
+ };
10575
+ proposed: {
10576
+ source: "github" | "gitlab";
10577
+ projectKey: string;
10578
+ deliveryLabels: string[];
10579
+ openedLabels: string[];
10580
+ /** @description Native Status values (GitLab Status widget) that mark an issue delivered. Empty means nothing declared, never 'no gate'. */
10581
+ deliveryStatuses: string[];
10582
+ /** @description Native Status values that (re)open an issue. Empty means nothing declared. */
10583
+ openedStatuses: string[];
10584
+ updatedAt: string | null;
10585
+ } | {
10586
+ applicationSlug: string;
10587
+ /** @description Labels whose addition marks an issue delivered FOR THIS APPLICATION. Non-empty means these rules replace the tracker's for every issue the application claims; empty means the application declares nothing and its tracker's rules stay in force. */
10588
+ deliveryLabels: string[];
10589
+ /** @description Labels marking an issue in progress for this application. Only read when `deliveryLabels` is non-empty — a rule set with no delivery label cannot decide a delivery and never shadows the tracker's. */
10590
+ openedLabels: string[];
10591
+ updatedAt: string | null;
10592
+ };
10593
+ diff: {
10594
+ unscoped: {
10595
+ appeared: {
10596
+ kind: "issue" | "standalone";
10597
+ /** @description `${source}:${projectKey}:${number}` */
10598
+ key: string;
10599
+ title: string;
10600
+ url: string;
10601
+ before: {
10602
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10603
+ deliveredAt: string | null;
10604
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10605
+ attribution: string | null;
10606
+ } | null;
10607
+ after: {
10608
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10609
+ deliveredAt: string | null;
10610
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10611
+ attribution: string | null;
10612
+ } | null;
10613
+ }[];
10614
+ disappeared: {
10615
+ kind: "issue" | "standalone";
10616
+ /** @description `${source}:${projectKey}:${number}` */
10617
+ key: string;
10618
+ title: string;
10619
+ url: string;
10620
+ before: {
10621
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10622
+ deliveredAt: string | null;
10623
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10624
+ attribution: string | null;
10625
+ } | null;
10626
+ after: {
10627
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10628
+ deliveredAt: string | null;
10629
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10630
+ attribution: string | null;
10631
+ } | null;
10632
+ }[];
10633
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10634
+ movedMonth: {
10635
+ kind: "issue" | "standalone";
10636
+ /** @description `${source}:${projectKey}:${number}` */
10637
+ key: string;
10638
+ title: string;
10639
+ url: string;
10640
+ before: {
10641
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10642
+ deliveredAt: string | null;
10643
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10644
+ attribution: string | null;
10645
+ } | null;
10646
+ after: {
10647
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10648
+ deliveredAt: string | null;
10649
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10650
+ attribution: string | null;
10651
+ } | null;
10652
+ }[];
10653
+ /** @description Only meaningful on a scoped run. */
10654
+ attributionChanged: {
10655
+ kind: "issue" | "standalone";
10656
+ /** @description `${source}:${projectKey}:${number}` */
10657
+ key: string;
10658
+ title: string;
10659
+ url: string;
10660
+ before: {
10661
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10662
+ deliveredAt: string | null;
10663
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10664
+ attribution: string | null;
10665
+ } | null;
10666
+ after: {
10667
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10668
+ deliveredAt: string | null;
10669
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10670
+ attribution: string | null;
10671
+ } | null;
10672
+ }[];
10673
+ totals: {
10674
+ before: {
10675
+ issues: string | number;
10676
+ standalone: string | number;
10677
+ };
10678
+ after: {
10679
+ issues: string | number;
10680
+ standalone: string | number;
10681
+ };
10682
+ };
10683
+ };
10684
+ scoped: {
10685
+ appeared: {
10686
+ kind: "issue" | "standalone";
10687
+ /** @description `${source}:${projectKey}:${number}` */
10688
+ key: string;
10689
+ title: string;
10690
+ url: string;
10691
+ before: {
10692
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10693
+ deliveredAt: string | null;
10694
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10695
+ attribution: string | null;
10696
+ } | null;
10697
+ after: {
10698
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10699
+ deliveredAt: string | null;
10700
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10701
+ attribution: string | null;
10702
+ } | null;
10703
+ }[];
10704
+ disappeared: {
10705
+ kind: "issue" | "standalone";
10706
+ /** @description `${source}:${projectKey}:${number}` */
10707
+ key: string;
10708
+ title: string;
10709
+ url: string;
10710
+ before: {
10711
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10712
+ deliveredAt: string | null;
10713
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10714
+ attribution: string | null;
10715
+ } | null;
10716
+ after: {
10717
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10718
+ deliveredAt: string | null;
10719
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10720
+ attribution: string | null;
10721
+ } | null;
10722
+ }[];
10723
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
10724
+ movedMonth: {
10725
+ kind: "issue" | "standalone";
10726
+ /** @description `${source}:${projectKey}:${number}` */
10727
+ key: string;
10728
+ title: string;
10729
+ url: string;
10730
+ before: {
10731
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10732
+ deliveredAt: string | null;
10733
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10734
+ attribution: string | null;
10735
+ } | null;
10736
+ after: {
10737
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10738
+ deliveredAt: string | null;
10739
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10740
+ attribution: string | null;
10741
+ } | null;
10742
+ }[];
10743
+ /** @description Only meaningful on a scoped run. */
10744
+ attributionChanged: {
10745
+ kind: "issue" | "standalone";
10746
+ /** @description `${source}:${projectKey}:${number}` */
10747
+ key: string;
10748
+ title: string;
10749
+ url: string;
10750
+ before: {
10751
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10752
+ deliveredAt: string | null;
10753
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10754
+ attribution: string | null;
10755
+ } | null;
10756
+ after: {
10757
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
10758
+ deliveredAt: string | null;
10759
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
10760
+ attribution: string | null;
10761
+ } | null;
10762
+ }[];
10763
+ totals: {
10764
+ before: {
10765
+ issues: string | number;
10766
+ standalone: string | number;
10767
+ };
10768
+ after: {
10769
+ issues: string | number;
10770
+ standalone: string | number;
10771
+ };
10772
+ };
10773
+ } | null;
10774
+ };
10775
+ /** @description Send as `If-Match` on the matching PATCH with the SAME body as `patch`. */
10776
+ previewToken: string;
10777
+ /** @description True when either CRA run (before or after, issues or standalone) was capped — the diff then covers only part of the window. */
10778
+ truncated: boolean;
10779
+ };
10780
+ };
10781
+ };
10782
+ 400: {
10783
+ headers: {
10784
+ [name: string]: unknown;
10785
+ };
10786
+ content: {
10787
+ "application/json": {
10788
+ error: string;
10789
+ };
10790
+ "multipart/form-data": {
10791
+ error: string;
10792
+ };
10793
+ "text/plain": {
10794
+ error: string;
10795
+ };
10796
+ };
10797
+ };
10798
+ 403: {
10799
+ headers: {
10800
+ [name: string]: unknown;
10801
+ };
10802
+ content: {
10803
+ "application/json": {
10804
+ error: string;
10805
+ };
10806
+ "multipart/form-data": {
10807
+ error: string;
10808
+ };
10809
+ "text/plain": {
10810
+ error: string;
10811
+ };
10812
+ };
10813
+ };
10814
+ 404: {
10815
+ headers: {
10816
+ [name: string]: unknown;
10817
+ };
10818
+ content: {
10819
+ "application/json": {
10820
+ error: string;
10821
+ };
10822
+ "multipart/form-data": {
10823
+ error: string;
10824
+ };
10825
+ "text/plain": {
10826
+ error: string;
10827
+ };
10828
+ };
10829
+ };
10830
+ };
10831
+ };
10832
+ "postV1PreviewsWorkflow-rules": {
10833
+ parameters: {
10834
+ query?: never;
10835
+ header?: never;
10836
+ path?: never;
10837
+ cookie?: never;
10838
+ };
10839
+ requestBody: {
10840
+ content: {
10841
+ "application/json": {
10842
+ source: "github" | "gitlab";
10843
+ projectKey: string;
10844
+ patch: {
10845
+ labelRules?: {
10846
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
10847
+ prefix: string;
10848
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10849
+ }[];
10850
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
10851
+ statusSource?: {
10852
+ /** @constant */
10853
+ kind: "gitlab-native";
10854
+ } | {
10855
+ /** @constant */
10856
+ kind: "github-project";
10857
+ projectNumber: string | number;
10858
+ fieldName: string;
10859
+ } | null;
10860
+ statusRules?: {
10861
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
10862
+ value: string;
10863
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10864
+ }[];
10865
+ flowFamilies?: string[];
10866
+ };
10867
+ };
10868
+ "multipart/form-data": {
10869
+ source: "github" | "gitlab";
10870
+ projectKey: string;
10871
+ patch: {
10872
+ labelRules?: {
10873
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
10874
+ prefix: string;
10875
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10876
+ }[];
10877
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
10878
+ statusSource?: {
10879
+ /** @constant */
10880
+ kind: "gitlab-native";
10881
+ } | {
10882
+ /** @constant */
10883
+ kind: "github-project";
10884
+ projectNumber: string | number;
10885
+ fieldName: string;
10886
+ } | null;
10887
+ statusRules?: {
10888
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
10889
+ value: string;
10890
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10891
+ }[];
10892
+ flowFamilies?: string[];
10893
+ };
10894
+ };
10895
+ "text/plain": {
10896
+ source: "github" | "gitlab";
10897
+ projectKey: string;
10898
+ patch: {
10899
+ labelRules?: {
10900
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
10901
+ prefix: string;
10902
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10903
+ }[];
10904
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
10905
+ statusSource?: {
10906
+ /** @constant */
10907
+ kind: "gitlab-native";
10908
+ } | {
10909
+ /** @constant */
10910
+ kind: "github-project";
10911
+ projectNumber: string | number;
10912
+ fieldName: string;
10913
+ } | null;
10914
+ statusRules?: {
10915
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
10916
+ value: string;
10917
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10918
+ }[];
10919
+ flowFamilies?: string[];
10920
+ };
10921
+ };
10922
+ };
10923
+ };
10924
+ responses: {
10925
+ 200: {
10926
+ headers: {
10927
+ [name: string]: unknown;
10928
+ };
10929
+ content: {
10930
+ "application/json": {
10931
+ current: {
10932
+ source: "github" | "gitlab";
10933
+ projectKey: string;
10934
+ labelRules: {
10935
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
10936
+ prefix: string;
10937
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10938
+ }[];
10939
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
10940
+ statusSource: {
10941
+ /** @constant */
10942
+ kind: "gitlab-native";
10943
+ } | {
10944
+ /** @constant */
10945
+ kind: "github-project";
10946
+ projectNumber: string | number;
10947
+ fieldName: string;
10948
+ } | null;
10949
+ statusRules: {
10950
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
10951
+ value: string;
10952
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10953
+ }[];
10954
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
10955
+ flowFamilies: string[];
10956
+ };
10957
+ proposed: {
10958
+ source: "github" | "gitlab";
10959
+ projectKey: string;
10960
+ labelRules: {
10961
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
10962
+ prefix: string;
10963
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10964
+ }[];
10965
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
10966
+ statusSource: {
10967
+ /** @constant */
10968
+ kind: "gitlab-native";
10969
+ } | {
10970
+ /** @constant */
10971
+ kind: "github-project";
10972
+ projectNumber: string | number;
10973
+ fieldName: string;
10974
+ } | null;
10975
+ statusRules: {
10976
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
10977
+ value: string;
10978
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
10979
+ }[];
10980
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
10981
+ flowFamilies: string[];
10982
+ };
10983
+ stateDistribution: {
10984
+ before: {
10985
+ todo: string | number;
10986
+ doing: string | number;
10987
+ review: string | number;
10988
+ delivered: string | number;
10989
+ blocked: string | number;
10990
+ done: string | number;
10991
+ };
10992
+ after: {
10993
+ todo: string | number;
10994
+ doing: string | number;
10995
+ review: string | number;
10996
+ delivered: string | number;
10997
+ blocked: string | number;
10998
+ done: string | number;
10999
+ };
11000
+ };
11001
+ /** @description Open issues whose `workflow.state` changes, ≤ 200. */
11002
+ changedIssues: {
11003
+ number: string | number;
11004
+ title: string;
11005
+ before: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11006
+ after: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11007
+ }[];
11008
+ /** @description True when `changedIssues` was capped at 200, or when the open-issue load itself was capped (the distribution then covers part of the tracker). */
11009
+ truncated: boolean;
11010
+ /** @description Send as `If-Match` on the workflow-rules PATCH with the SAME body as `patch`. */
11011
+ previewToken: string;
11012
+ };
11013
+ "multipart/form-data": {
11014
+ current: {
11015
+ source: "github" | "gitlab";
11016
+ projectKey: string;
11017
+ labelRules: {
11018
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
11019
+ prefix: string;
11020
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11021
+ }[];
11022
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
11023
+ statusSource: {
11024
+ /** @constant */
11025
+ kind: "gitlab-native";
11026
+ } | {
11027
+ /** @constant */
11028
+ kind: "github-project";
11029
+ projectNumber: string | number;
11030
+ fieldName: string;
11031
+ } | null;
11032
+ statusRules: {
11033
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
11034
+ value: string;
11035
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11036
+ }[];
11037
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
11038
+ flowFamilies: string[];
11039
+ };
11040
+ proposed: {
11041
+ source: "github" | "gitlab";
11042
+ projectKey: string;
11043
+ labelRules: {
11044
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
11045
+ prefix: string;
11046
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11047
+ }[];
11048
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
11049
+ statusSource: {
11050
+ /** @constant */
11051
+ kind: "gitlab-native";
11052
+ } | {
11053
+ /** @constant */
11054
+ kind: "github-project";
11055
+ projectNumber: string | number;
11056
+ fieldName: string;
11057
+ } | null;
11058
+ statusRules: {
11059
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
11060
+ value: string;
11061
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11062
+ }[];
11063
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
11064
+ flowFamilies: string[];
11065
+ };
11066
+ stateDistribution: {
11067
+ before: {
11068
+ todo: string | number;
11069
+ doing: string | number;
11070
+ review: string | number;
11071
+ delivered: string | number;
11072
+ blocked: string | number;
11073
+ done: string | number;
11074
+ };
11075
+ after: {
11076
+ todo: string | number;
11077
+ doing: string | number;
11078
+ review: string | number;
11079
+ delivered: string | number;
11080
+ blocked: string | number;
11081
+ done: string | number;
11082
+ };
11083
+ };
11084
+ /** @description Open issues whose `workflow.state` changes, ≤ 200. */
11085
+ changedIssues: {
11086
+ number: string | number;
11087
+ title: string;
11088
+ before: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11089
+ after: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11090
+ }[];
11091
+ /** @description True when `changedIssues` was capped at 200, or when the open-issue load itself was capped (the distribution then covers part of the tracker). */
11092
+ truncated: boolean;
11093
+ /** @description Send as `If-Match` on the workflow-rules PATCH with the SAME body as `patch`. */
11094
+ previewToken: string;
11095
+ };
11096
+ "text/plain": {
11097
+ current: {
11098
+ source: "github" | "gitlab";
11099
+ projectKey: string;
11100
+ labelRules: {
11101
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
11102
+ prefix: string;
11103
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11104
+ }[];
11105
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
11106
+ statusSource: {
11107
+ /** @constant */
11108
+ kind: "gitlab-native";
11109
+ } | {
11110
+ /** @constant */
11111
+ kind: "github-project";
11112
+ projectNumber: string | number;
11113
+ fieldName: string;
11114
+ } | null;
11115
+ statusRules: {
11116
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
11117
+ value: string;
11118
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11119
+ }[];
11120
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
11121
+ flowFamilies: string[];
11122
+ };
11123
+ proposed: {
11124
+ source: "github" | "gitlab";
11125
+ projectKey: string;
11126
+ labelRules: {
11127
+ /** @description Label prefix, matched case-insensitively against the part of the label name before any parenthesis (so a WIP limit like `=::Doing (3)` still matches `=::Doing`). */
11128
+ prefix: string;
11129
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11130
+ }[];
11131
+ /** @description Where ingestion WOULD read the issue's native status from — GitLab's own status field, or a named field on a numbered GitHub Project. `null` means no native status is read and the calculation falls through to labels/signals. Configured but not yet ingested: reading GitLab's native work-item status and a named GitHub Project v2 field are both deferred (no live credentials yet), so `_gc.nativeStatus` has no writer today regardless of what is declared here — a non-null `statusSource` is forward-looking configuration for when that ingestion lands, not a live data path. This is NOT read by the calculation itself (`WorkflowRules` in `workflow/computeState.ts` carries no `statusSource`): it is an ingestion concern, stored here only because the config screen edits both together. */
11132
+ statusSource: {
11133
+ /** @constant */
11134
+ kind: "gitlab-native";
11135
+ } | {
11136
+ /** @constant */
11137
+ kind: "github-project";
11138
+ projectNumber: string | number;
11139
+ fieldName: string;
11140
+ } | null;
11141
+ statusRules: {
11142
+ /** @description Matched EXACTLY against the tracker-native status resolved via `statusSource` — no prefix matching, because a structured field carries no WIP-limit suffix to strip. */
11143
+ value: string;
11144
+ state: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11145
+ }[];
11146
+ /** @description Label prefixes considered part of the workflow's flow, e.g. a whole column family like `=::`. Without this declaration, a label that is simply not part of the flow (unrelated to workflow state) cannot be told apart from a flow label whose column was renamed and is no longer covered by any `labelRules` — both would just be silently ignored. Declaring the family lets the calculation tell the two apart internally, but that distinction is NOT exposed on any `/v1` response (no `unmatchedFlowLabels` field exists in this API) — it is config-screen information only, surfaced live on the per-tracker workflow-rules editor (`WorkflowRulesCard`) as the list of flow labels no rule currently covers. */
11147
+ flowFamilies: string[];
11148
+ };
11149
+ stateDistribution: {
11150
+ before: {
11151
+ todo: string | number;
11152
+ doing: string | number;
11153
+ review: string | number;
11154
+ delivered: string | number;
11155
+ blocked: string | number;
11156
+ done: string | number;
11157
+ };
11158
+ after: {
11159
+ todo: string | number;
11160
+ doing: string | number;
11161
+ review: string | number;
11162
+ delivered: string | number;
11163
+ blocked: string | number;
11164
+ done: string | number;
11165
+ };
11166
+ };
11167
+ /** @description Open issues whose `workflow.state` changes, ≤ 200. */
11168
+ changedIssues: {
11169
+ number: string | number;
11170
+ title: string;
11171
+ before: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11172
+ after: "todo" | "doing" | "review" | "delivered" | "blocked" | "done";
11173
+ }[];
11174
+ /** @description True when `changedIssues` was capped at 200, or when the open-issue load itself was capped (the distribution then covers part of the tracker). */
11175
+ truncated: boolean;
11176
+ /** @description Send as `If-Match` on the workflow-rules PATCH with the SAME body as `patch`. */
11177
+ previewToken: string;
11178
+ };
11179
+ };
11180
+ };
11181
+ 400: {
11182
+ headers: {
11183
+ [name: string]: unknown;
11184
+ };
11185
+ content: {
11186
+ "application/json": {
11187
+ error: string;
11188
+ };
11189
+ "multipart/form-data": {
11190
+ error: string;
11191
+ };
11192
+ "text/plain": {
11193
+ error: string;
11194
+ };
11195
+ };
11196
+ };
11197
+ 403: {
11198
+ headers: {
11199
+ [name: string]: unknown;
11200
+ };
11201
+ content: {
11202
+ "application/json": {
11203
+ error: string;
11204
+ };
11205
+ "multipart/form-data": {
11206
+ error: string;
11207
+ };
11208
+ "text/plain": {
11209
+ error: string;
11210
+ };
11211
+ };
11212
+ };
11213
+ };
11214
+ };
11215
+ "postV1PreviewsIdentity-aliases": {
11216
+ parameters: {
11217
+ query?: never;
11218
+ header?: never;
11219
+ path?: never;
11220
+ cookie?: never;
11221
+ };
11222
+ requestBody: {
11223
+ content: {
11224
+ "application/json": {
11225
+ identityId: string | number;
11226
+ op: "add" | "remove";
11227
+ provider: "github" | "gitlab";
11228
+ login: string;
11229
+ /** @description Window start (ISO date or datetime). */
11230
+ from: string;
11231
+ /** @description Window end (ISO date or datetime). */
11232
+ to: string;
11233
+ };
11234
+ "multipart/form-data": {
11235
+ identityId: string | number;
11236
+ op: "add" | "remove";
11237
+ provider: "github" | "gitlab";
11238
+ login: string;
11239
+ /** @description Window start (ISO date or datetime). */
11240
+ from: string;
11241
+ /** @description Window end (ISO date or datetime). */
11242
+ to: string;
11243
+ };
11244
+ "text/plain": {
11245
+ identityId: string | number;
11246
+ op: "add" | "remove";
11247
+ provider: "github" | "gitlab";
11248
+ login: string;
11249
+ /** @description Window start (ISO date or datetime). */
11250
+ from: string;
11251
+ /** @description Window end (ISO date or datetime). */
11252
+ to: string;
11253
+ };
11254
+ };
11255
+ };
11256
+ responses: {
11257
+ 200: {
11258
+ headers: {
11259
+ [name: string]: unknown;
11260
+ };
11261
+ content: {
11262
+ "application/json": {
11263
+ current: {
11264
+ provider: "github" | "gitlab";
11265
+ login: string;
11266
+ }[];
11267
+ proposed: {
11268
+ provider: "github" | "gitlab";
11269
+ login: string;
11270
+ }[];
11271
+ diff: {
11272
+ appeared: {
11273
+ kind: "issue" | "standalone";
11274
+ /** @description `${source}:${projectKey}:${number}` */
11275
+ key: string;
11276
+ title: string;
11277
+ url: string;
11278
+ before: {
11279
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11280
+ deliveredAt: string | null;
11281
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11282
+ attribution: string | null;
11283
+ } | null;
11284
+ after: {
11285
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11286
+ deliveredAt: string | null;
11287
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11288
+ attribution: string | null;
11289
+ } | null;
11290
+ }[];
11291
+ disappeared: {
11292
+ kind: "issue" | "standalone";
11293
+ /** @description `${source}:${projectKey}:${number}` */
11294
+ key: string;
11295
+ title: string;
11296
+ url: string;
11297
+ before: {
11298
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11299
+ deliveredAt: string | null;
11300
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11301
+ attribution: string | null;
11302
+ } | null;
11303
+ after: {
11304
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11305
+ deliveredAt: string | null;
11306
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11307
+ attribution: string | null;
11308
+ } | null;
11309
+ }[];
11310
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
11311
+ movedMonth: {
11312
+ kind: "issue" | "standalone";
11313
+ /** @description `${source}:${projectKey}:${number}` */
11314
+ key: string;
11315
+ title: string;
11316
+ url: string;
11317
+ before: {
11318
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11319
+ deliveredAt: string | null;
11320
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11321
+ attribution: string | null;
11322
+ } | null;
11323
+ after: {
11324
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11325
+ deliveredAt: string | null;
11326
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11327
+ attribution: string | null;
11328
+ } | null;
11329
+ }[];
11330
+ /** @description Only meaningful on a scoped run. */
11331
+ attributionChanged: {
11332
+ kind: "issue" | "standalone";
11333
+ /** @description `${source}:${projectKey}:${number}` */
11334
+ key: string;
11335
+ title: string;
11336
+ url: string;
11337
+ before: {
11338
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11339
+ deliveredAt: string | null;
11340
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11341
+ attribution: string | null;
11342
+ } | null;
11343
+ after: {
11344
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11345
+ deliveredAt: string | null;
11346
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11347
+ attribution: string | null;
11348
+ } | null;
11349
+ }[];
11350
+ totals: {
11351
+ before: {
11352
+ issues: string | number;
11353
+ standalone: string | number;
11354
+ };
11355
+ after: {
11356
+ issues: string | number;
11357
+ standalone: string | number;
11358
+ };
11359
+ };
11360
+ };
11361
+ /** @description Send as `If-Match` on `POST /v1/identities/{id}/aliases` (op add, body `{provider, login}`) or `DELETE /v1/identities/{id}/aliases/{provider}/{login}` (op remove). */
11362
+ previewToken: string;
11363
+ /** @description True when either CRA run was capped. */
11364
+ truncated: boolean;
11365
+ };
11366
+ "multipart/form-data": {
11367
+ current: {
11368
+ provider: "github" | "gitlab";
11369
+ login: string;
11370
+ }[];
11371
+ proposed: {
11372
+ provider: "github" | "gitlab";
11373
+ login: string;
11374
+ }[];
11375
+ diff: {
11376
+ appeared: {
11377
+ kind: "issue" | "standalone";
11378
+ /** @description `${source}:${projectKey}:${number}` */
11379
+ key: string;
11380
+ title: string;
11381
+ url: string;
11382
+ before: {
11383
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11384
+ deliveredAt: string | null;
11385
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11386
+ attribution: string | null;
11387
+ } | null;
11388
+ after: {
11389
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11390
+ deliveredAt: string | null;
11391
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11392
+ attribution: string | null;
11393
+ } | null;
11394
+ }[];
11395
+ disappeared: {
11396
+ kind: "issue" | "standalone";
11397
+ /** @description `${source}:${projectKey}:${number}` */
11398
+ key: string;
11399
+ title: string;
11400
+ url: string;
11401
+ before: {
11402
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11403
+ deliveredAt: string | null;
11404
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11405
+ attribution: string | null;
11406
+ } | null;
11407
+ after: {
11408
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11409
+ deliveredAt: string | null;
11410
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11411
+ attribution: string | null;
11412
+ } | null;
11413
+ }[];
11414
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
11415
+ movedMonth: {
11416
+ kind: "issue" | "standalone";
11417
+ /** @description `${source}:${projectKey}:${number}` */
11418
+ key: string;
11419
+ title: string;
11420
+ url: string;
11421
+ before: {
11422
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11423
+ deliveredAt: string | null;
11424
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11425
+ attribution: string | null;
11426
+ } | null;
11427
+ after: {
11428
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11429
+ deliveredAt: string | null;
11430
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11431
+ attribution: string | null;
11432
+ } | null;
11433
+ }[];
11434
+ /** @description Only meaningful on a scoped run. */
11435
+ attributionChanged: {
11436
+ kind: "issue" | "standalone";
11437
+ /** @description `${source}:${projectKey}:${number}` */
11438
+ key: string;
11439
+ title: string;
11440
+ url: string;
11441
+ before: {
11442
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11443
+ deliveredAt: string | null;
11444
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11445
+ attribution: string | null;
11446
+ } | null;
11447
+ after: {
11448
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11449
+ deliveredAt: string | null;
11450
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11451
+ attribution: string | null;
11452
+ } | null;
11453
+ }[];
11454
+ totals: {
11455
+ before: {
11456
+ issues: string | number;
11457
+ standalone: string | number;
11458
+ };
11459
+ after: {
11460
+ issues: string | number;
11461
+ standalone: string | number;
11462
+ };
11463
+ };
11464
+ };
11465
+ /** @description Send as `If-Match` on `POST /v1/identities/{id}/aliases` (op add, body `{provider, login}`) or `DELETE /v1/identities/{id}/aliases/{provider}/{login}` (op remove). */
11466
+ previewToken: string;
11467
+ /** @description True when either CRA run was capped. */
11468
+ truncated: boolean;
11469
+ };
11470
+ "text/plain": {
11471
+ current: {
11472
+ provider: "github" | "gitlab";
11473
+ login: string;
11474
+ }[];
11475
+ proposed: {
11476
+ provider: "github" | "gitlab";
11477
+ login: string;
11478
+ }[];
11479
+ diff: {
11480
+ appeared: {
11481
+ kind: "issue" | "standalone";
11482
+ /** @description `${source}:${projectKey}:${number}` */
11483
+ key: string;
11484
+ title: string;
11485
+ url: string;
11486
+ before: {
11487
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11488
+ deliveredAt: string | null;
11489
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11490
+ attribution: string | null;
11491
+ } | null;
11492
+ after: {
11493
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11494
+ deliveredAt: string | null;
11495
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11496
+ attribution: string | null;
11497
+ } | null;
11498
+ }[];
11499
+ disappeared: {
11500
+ kind: "issue" | "standalone";
11501
+ /** @description `${source}:${projectKey}:${number}` */
11502
+ key: string;
11503
+ title: string;
11504
+ url: string;
11505
+ before: {
11506
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11507
+ deliveredAt: string | null;
11508
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11509
+ attribution: string | null;
11510
+ } | null;
11511
+ after: {
11512
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11513
+ deliveredAt: string | null;
11514
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11515
+ attribution: string | null;
11516
+ } | null;
11517
+ }[];
11518
+ /** @description Lines whose delivery month (YYYY-MM) changes. */
11519
+ movedMonth: {
11520
+ kind: "issue" | "standalone";
11521
+ /** @description `${source}:${projectKey}:${number}` */
11522
+ key: string;
11523
+ title: string;
11524
+ url: string;
11525
+ before: {
11526
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11527
+ deliveredAt: string | null;
11528
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11529
+ attribution: string | null;
11530
+ } | null;
11531
+ after: {
11532
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11533
+ deliveredAt: string | null;
11534
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11535
+ attribution: string | null;
11536
+ } | null;
11537
+ }[];
11538
+ /** @description Only meaningful on a scoped run. */
11539
+ attributionChanged: {
11540
+ kind: "issue" | "standalone";
11541
+ /** @description `${source}:${projectKey}:${number}` */
11542
+ key: string;
11543
+ title: string;
11544
+ url: string;
11545
+ before: {
11546
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11547
+ deliveredAt: string | null;
11548
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11549
+ attribution: string | null;
11550
+ } | null;
11551
+ after: {
11552
+ /** @description Issue: `deliveredAt`. Standalone MR/PR: `mergedAt`. The month of this date is the CRA period the line bills in. */
11553
+ deliveredAt: string | null;
11554
+ /** @description Issue: `attribution.result` (assigned/committer/pr_author). Standalone: the credited login. Null on an unscoped run. */
11555
+ attribution: string | null;
11556
+ } | null;
11557
+ }[];
11558
+ totals: {
11559
+ before: {
11560
+ issues: string | number;
11561
+ standalone: string | number;
11562
+ };
11563
+ after: {
11564
+ issues: string | number;
11565
+ standalone: string | number;
11566
+ };
11567
+ };
11568
+ };
11569
+ /** @description Send as `If-Match` on `POST /v1/identities/{id}/aliases` (op add, body `{provider, login}`) or `DELETE /v1/identities/{id}/aliases/{provider}/{login}` (op remove). */
11570
+ previewToken: string;
11571
+ /** @description True when either CRA run was capped. */
11572
+ truncated: boolean;
11573
+ };
11574
+ };
11575
+ };
11576
+ 400: {
11577
+ headers: {
11578
+ [name: string]: unknown;
11579
+ };
11580
+ content: {
11581
+ "application/json": {
11582
+ error: string;
11583
+ };
11584
+ "multipart/form-data": {
11585
+ error: string;
11586
+ };
11587
+ "text/plain": {
11588
+ error: string;
11589
+ };
11590
+ };
11591
+ };
11592
+ 403: {
11593
+ headers: {
11594
+ [name: string]: unknown;
11595
+ };
11596
+ content: {
11597
+ "application/json": {
11598
+ error: string;
11599
+ };
11600
+ "multipart/form-data": {
11601
+ error: string;
11602
+ };
11603
+ "text/plain": {
11604
+ error: string;
11605
+ };
11606
+ };
11607
+ };
11608
+ 404: {
11609
+ headers: {
11610
+ [name: string]: unknown;
11611
+ };
11612
+ content: {
11613
+ "application/json": {
11614
+ error: string;
11615
+ };
11616
+ "multipart/form-data": {
11617
+ error: string;
11618
+ };
11619
+ "text/plain": {
11620
+ error: string;
11621
+ };
11622
+ };
11623
+ };
11624
+ };
11625
+ };
11626
+ getV1ProjectsBySourceByProjectKeyProfile: {
11627
+ parameters: {
11628
+ query?: {
11629
+ from?: string;
11630
+ to?: string;
11631
+ };
11632
+ header?: never;
11633
+ path: {
11634
+ source: string;
11635
+ projectKey: string;
11636
+ };
11637
+ cookie?: never;
11638
+ };
11639
+ requestBody?: never;
11640
+ responses: {
11641
+ 200: {
11642
+ headers: {
11643
+ [name: string]: unknown;
11644
+ };
11645
+ content: {
11646
+ "application/json": {
11647
+ issues: {
11648
+ total: string | number;
11649
+ open: string | number;
11650
+ withIteration: string | number;
11651
+ withMilestone: string | number;
11652
+ withAssignee: string | number;
11653
+ };
11654
+ /** @description Issues per `workflow.origin` (closed|status|label|signals). */
11655
+ workflowOrigin: {
11656
+ [key: string]: string | number;
11657
+ };
11658
+ /** @description OPEN issues per computed `workflow.state`. */
11659
+ workflowState: {
11660
+ [key: string]: string | number;
11661
+ };
11662
+ /** @description Current native status per issue, read as the LAST entry of its status chronology (`statusChanges`); issues with no chronology are not counted. Sorted by count desc then name. */
11663
+ nativeStatuses: {
11664
+ name: string;
11665
+ count: string | number;
11666
+ }[];
11667
+ /** @description Top 50 labels by issue count; see `labelsTruncated`. */
11668
+ labels: {
11669
+ name: string;
11670
+ count: string | number;
11671
+ }[];
11672
+ labelsTruncated: boolean;
11673
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11674
+ truncated: boolean;
11675
+ perAssignee: {
11676
+ login: string;
11677
+ byState: {
11678
+ [key: string]: string | number;
11679
+ };
11680
+ }[];
11681
+ /** @description `null` when the project key has no PR/MR activity at all (a pure tracker); otherwise merged PR/MRs in the window and those NO issue bills (the standalone deliverables of that code repo). */
11682
+ mergeRequests: {
11683
+ mergedInWindow: string | number;
11684
+ withoutIssue: string | number;
11685
+ } | null;
11686
+ };
11687
+ "multipart/form-data": {
11688
+ issues: {
11689
+ total: string | number;
11690
+ open: string | number;
11691
+ withIteration: string | number;
11692
+ withMilestone: string | number;
11693
+ withAssignee: string | number;
11694
+ };
11695
+ /** @description Issues per `workflow.origin` (closed|status|label|signals). */
11696
+ workflowOrigin: {
11697
+ [key: string]: string | number;
11698
+ };
11699
+ /** @description OPEN issues per computed `workflow.state`. */
11700
+ workflowState: {
11701
+ [key: string]: string | number;
11702
+ };
11703
+ /** @description Current native status per issue, read as the LAST entry of its status chronology (`statusChanges`); issues with no chronology are not counted. Sorted by count desc then name. */
11704
+ nativeStatuses: {
11705
+ name: string;
11706
+ count: string | number;
11707
+ }[];
11708
+ /** @description Top 50 labels by issue count; see `labelsTruncated`. */
11709
+ labels: {
11710
+ name: string;
11711
+ count: string | number;
11712
+ }[];
11713
+ labelsTruncated: boolean;
11714
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11715
+ truncated: boolean;
11716
+ perAssignee: {
11717
+ login: string;
11718
+ byState: {
11719
+ [key: string]: string | number;
11720
+ };
11721
+ }[];
11722
+ /** @description `null` when the project key has no PR/MR activity at all (a pure tracker); otherwise merged PR/MRs in the window and those NO issue bills (the standalone deliverables of that code repo). */
11723
+ mergeRequests: {
11724
+ mergedInWindow: string | number;
11725
+ withoutIssue: string | number;
11726
+ } | null;
11727
+ };
11728
+ "text/plain": {
11729
+ issues: {
11730
+ total: string | number;
11731
+ open: string | number;
11732
+ withIteration: string | number;
11733
+ withMilestone: string | number;
11734
+ withAssignee: string | number;
11735
+ };
11736
+ /** @description Issues per `workflow.origin` (closed|status|label|signals). */
11737
+ workflowOrigin: {
11738
+ [key: string]: string | number;
11739
+ };
11740
+ /** @description OPEN issues per computed `workflow.state`. */
11741
+ workflowState: {
11742
+ [key: string]: string | number;
11743
+ };
11744
+ /** @description Current native status per issue, read as the LAST entry of its status chronology (`statusChanges`); issues with no chronology are not counted. Sorted by count desc then name. */
11745
+ nativeStatuses: {
11746
+ name: string;
11747
+ count: string | number;
11748
+ }[];
11749
+ /** @description Top 50 labels by issue count; see `labelsTruncated`. */
11750
+ labels: {
11751
+ name: string;
11752
+ count: string | number;
11753
+ }[];
11754
+ labelsTruncated: boolean;
11755
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11756
+ truncated: boolean;
11757
+ perAssignee: {
11758
+ login: string;
11759
+ byState: {
11760
+ [key: string]: string | number;
11761
+ };
11762
+ }[];
11763
+ /** @description `null` when the project key has no PR/MR activity at all (a pure tracker); otherwise merged PR/MRs in the window and those NO issue bills (the standalone deliverables of that code repo). */
11764
+ mergeRequests: {
11765
+ mergedInWindow: string | number;
11766
+ withoutIssue: string | number;
11767
+ } | null;
11768
+ };
11769
+ };
11770
+ };
11771
+ 400: {
11772
+ headers: {
11773
+ [name: string]: unknown;
11774
+ };
11775
+ content: {
11776
+ "application/json": {
11777
+ error: string;
11778
+ };
11779
+ "multipart/form-data": {
11780
+ error: string;
11781
+ };
11782
+ "text/plain": {
11783
+ error: string;
11784
+ };
11785
+ };
11786
+ };
11787
+ 403: {
11788
+ headers: {
11789
+ [name: string]: unknown;
11790
+ };
11791
+ content: {
11792
+ "application/json": {
11793
+ error: string;
11794
+ };
11795
+ "multipart/form-data": {
11796
+ error: string;
11797
+ };
11798
+ "text/plain": {
11799
+ error: string;
11800
+ };
11801
+ };
11802
+ };
11803
+ };
11804
+ };
11805
+ "getV1ProjectsBySourceByProjectKeyLabel-status-correspondence": {
11806
+ parameters: {
11807
+ query?: {
11808
+ windowHours?: string;
11809
+ };
11810
+ header?: never;
11811
+ path: {
11812
+ source: string;
11813
+ projectKey: string;
11814
+ };
11815
+ cookie?: never;
11816
+ };
11817
+ requestBody?: never;
11818
+ responses: {
11819
+ 200: {
11820
+ headers: {
11821
+ [name: string]: unknown;
11822
+ };
11823
+ content: {
11824
+ "application/json": {
11825
+ windowHours: string | number;
11826
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11827
+ truncated: boolean;
11828
+ /** @description Issues with at least one `added` label event and at least one native-status change. */
11829
+ issuesWithBoth: string | number;
11830
+ labels: {
11831
+ label: string;
11832
+ occurrences: string | number;
11833
+ statuses: {
11834
+ status: string;
11835
+ count: string | number;
11836
+ }[];
11837
+ }[];
11838
+ };
11839
+ "multipart/form-data": {
11840
+ windowHours: string | number;
11841
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11842
+ truncated: boolean;
11843
+ /** @description Issues with at least one `added` label event and at least one native-status change. */
11844
+ issuesWithBoth: string | number;
11845
+ labels: {
11846
+ label: string;
11847
+ occurrences: string | number;
11848
+ statuses: {
11849
+ status: string;
11850
+ count: string | number;
11851
+ }[];
11852
+ }[];
11853
+ };
11854
+ "text/plain": {
11855
+ windowHours: string | number;
11856
+ /** @description true when the tracker holds more issues than were loaded for this answer, so the counts describe only part of it. */
11857
+ truncated: boolean;
11858
+ /** @description Issues with at least one `added` label event and at least one native-status change. */
11859
+ issuesWithBoth: string | number;
11860
+ labels: {
11861
+ label: string;
11862
+ occurrences: string | number;
11863
+ statuses: {
11864
+ status: string;
11865
+ count: string | number;
11866
+ }[];
11867
+ }[];
11868
+ };
11869
+ };
11870
+ };
11871
+ 400: {
11872
+ headers: {
11873
+ [name: string]: unknown;
11874
+ };
11875
+ content: {
11876
+ "application/json": {
11877
+ error: string;
11878
+ };
11879
+ "multipart/form-data": {
11880
+ error: string;
11881
+ };
11882
+ "text/plain": {
11883
+ error: string;
11884
+ };
11885
+ };
11886
+ };
11887
+ 403: {
11888
+ headers: {
11889
+ [name: string]: unknown;
11890
+ };
11891
+ content: {
11892
+ "application/json": {
11893
+ error: string;
11894
+ };
11895
+ "multipart/form-data": {
11896
+ error: string;
11897
+ };
11898
+ "text/plain": {
11899
+ error: string;
11900
+ };
11901
+ };
11902
+ };
11903
+ };
11904
+ };
8204
11905
  }