@cesar-richard/git-connector-sdk 1.60.0 → 1.62.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 (3) hide show
  1. package/README.md +72 -1
  2. package/dist/schema.d.ts +2114 -1265
  3. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -84,6 +84,38 @@ export interface paths {
84
84
  patch?: never;
85
85
  trace?: never;
86
86
  };
87
+ "/v1/deliverables": {
88
+ parameters: {
89
+ query?: never;
90
+ header?: never;
91
+ path?: never;
92
+ cookie?: never;
93
+ };
94
+ get: operations["getV1Deliverables"];
95
+ put?: never;
96
+ post?: never;
97
+ delete?: never;
98
+ options?: never;
99
+ head?: never;
100
+ patch?: never;
101
+ trace?: never;
102
+ };
103
+ "/v1/projects/{source}/{projectKey}/delivery-rules": {
104
+ parameters: {
105
+ query?: never;
106
+ header?: never;
107
+ path?: never;
108
+ cookie?: never;
109
+ };
110
+ get: operations["getV1ProjectsBySourceByProjectKeyDelivery-rules"];
111
+ put?: never;
112
+ post?: never;
113
+ delete?: never;
114
+ options?: never;
115
+ head?: never;
116
+ patch: operations["patchV1ProjectsBySourceByProjectKeyDelivery-rules"];
117
+ trace?: never;
118
+ };
87
119
  }
88
120
  export type webhooks = Record<string, never>;
89
121
  export interface components {
@@ -140,106 +172,14 @@ export interface components {
140
172
  parentType: "issue" | "pr" | "mr";
141
173
  parentNumber: string | number;
142
174
  };
143
- ErrorResponse: {
144
- error: string;
145
- };
146
- EventsListResponse: {
147
- events: {
148
- id: string;
149
- source: "github" | "gitlab";
150
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
151
- repo: string;
152
- externalId: string;
153
- day: string;
154
- occurredAt: string;
155
- author: string | null;
156
- title: string;
157
- url: string | null;
158
- state: string | null;
159
- parentActivityId: string | null;
160
- meta: {
161
- [key: string]: unknown;
162
- } | null;
163
- authorResolved?: {
164
- login: string | null;
165
- name: string | null;
166
- email: string | null;
167
- };
168
- }[];
169
- total: string | number;
170
- nextCursor: string | null;
171
- };
172
- GitEvent: {
173
- id: string;
174
- source: "github" | "gitlab";
175
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
176
- repo: string;
177
- externalId: string;
178
- day: string;
179
- occurredAt: string;
180
- author: string | null;
181
- title: string;
182
- url: string | null;
183
- state: string | null;
184
- parentActivityId: string | null;
185
- meta: {
186
- [key: string]: unknown;
187
- } | null;
188
- authorResolved?: {
189
- login: string | null;
190
- name: string | null;
191
- email: string | null;
192
- };
193
- };
194
- IterationWithCount: {
195
- id: string | number;
196
- title: string;
197
- startDate: string | null;
198
- dueDate: string | null;
199
- state: "upcoming" | "current" | "closed" | "unknown";
200
- workItemCount: string | number;
201
- };
202
- Label: {
203
- name: string;
204
- color: string | null;
205
- };
206
- LinkEvidence: {
207
- field: string;
208
- text: string;
209
- matchStart: string | number;
210
- matchEnd: string | number;
211
- };
212
- LinkSource: {
213
- hintSource: string;
214
- kind: string;
175
+ DeliverableAttribution: {
176
+ isAssignee: boolean;
177
+ hasOwnCommit: boolean;
178
+ isMergedPRAuthor: boolean;
179
+ result: "assigned" | "committer" | "pr_author" | "none";
215
180
  };
216
- LinkedActivity: {
217
- id: string;
218
- type: "pr" | "mr";
219
- title: string;
220
- url: string;
221
- state: "open" | "closed" | "merged" | "draft" | "unknown";
222
- isDraft: boolean;
223
- isMerged: boolean;
224
- hasConflicts: boolean;
225
- awaitingReview: boolean;
226
- author: string | null;
227
- authorResolved?: {
228
- id: string;
229
- login: string;
230
- name: string | null;
231
- email: string | null;
232
- } | null;
233
- updatedAt: string;
234
- mergedAt: string | null;
235
- reviewRequestedAt: string | null;
236
- volume: {
237
- additions: string | number;
238
- deletions: string | number;
239
- changedFiles: string | number;
240
- commits: string | number;
241
- } | null;
242
- statusHistory: {
181
+ DeliverableEvidence: {
182
+ deliveryTransitions: {
243
183
  label: {
244
184
  name: string;
245
185
  color: string | null;
@@ -248,158 +188,34 @@ export interface components {
248
188
  changedAt: string;
249
189
  changedBy: string | null;
250
190
  }[];
251
- reviews: {
252
- approvedCount: string | number;
253
- changesRequestedCount: string | number;
254
- commentedCount: string | number;
255
- dismissedCount: string | number;
256
- entries: {
257
- state: "approved" | "changes_requested" | "commented" | "dismissed";
258
- reviewer: string;
259
- reviewerResolved?: {
260
- id: string;
261
- login: string;
262
- name: string | null;
263
- email: string | null;
264
- };
265
- submittedAt: string;
266
- url: string | null;
267
- }[];
268
- };
269
- unresolvedThreads: {
270
- count: string | number;
271
- digest: {
272
- id: string;
273
- firstNoteAuthor: string | null;
274
- firstNoteBody: string;
275
- firstNoteCreatedAt: string;
276
- url: string | null;
277
- }[];
278
- } | null;
279
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
280
- linkSource?: {
281
- hintSource: string;
282
- kind: string;
283
- };
284
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
285
- linkKind?: string;
286
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
287
- confidence?: number | null;
288
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
289
- status?: string;
290
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
291
- attributable?: boolean;
292
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
293
- resolves?: boolean;
294
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
295
- evidence?: {
296
- field: string;
297
- text: string;
298
- matchStart: string | number;
299
- matchEnd: string | number;
300
- } | null;
301
- };
302
- Provider: "github" | "gitlab";
303
- ResolvedUser: {
304
- id: string;
305
- login: string;
306
- name: string | null;
307
- email: string | null;
308
- };
309
- Review: {
310
- state: "approved" | "changes_requested" | "commented" | "dismissed";
311
- reviewer: string;
312
- reviewerResolved?: {
191
+ consideredCommits: {
313
192
  id: string;
314
- login: string;
315
- name: string | null;
316
- email: string | null;
317
- };
318
- submittedAt: string;
319
- url: string | null;
320
- };
321
- ReviewStatus: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
322
- ReviewsSummary: {
323
- approvedCount: string | number;
324
- changesRequestedCount: string | number;
325
- commentedCount: string | number;
326
- dismissedCount: string | number;
327
- entries: {
328
- state: "approved" | "changes_requested" | "commented" | "dismissed";
329
- reviewer: string;
330
- reviewerResolved?: {
331
- id: string;
332
- login: string;
333
- name: string | null;
334
- email: string | null;
335
- };
336
- submittedAt: string;
337
- url: string | null;
193
+ author: string | null;
194
+ occurredAt: string;
195
+ parentActivityId: string | null;
338
196
  }[];
339
- };
340
- StatusEvent: {
341
- label: {
342
- name: string;
343
- color: string | null;
344
- };
345
- action: "added" | "removed";
346
- changedAt: string;
347
- changedBy: string | null;
348
- };
349
- ThreadDigest: {
350
- id: string;
351
- firstNoteAuthor: string | null;
352
- firstNoteBody: string;
353
- firstNoteCreatedAt: string;
354
- url: string | null;
355
- };
356
- UnresolvedThreads: {
357
- count: string | number;
358
- digest: {
197
+ consideredPRs: {
359
198
  id: string;
360
- firstNoteAuthor: string | null;
361
- firstNoteBody: string;
362
- firstNoteCreatedAt: string;
363
- url: string | null;
199
+ author: string | null;
200
+ mergedAt: string | null;
201
+ attributable: boolean;
364
202
  }[];
365
203
  };
366
- Volume: {
367
- additions: string | number;
368
- deletions: string | number;
369
- changedFiles: string | number;
370
- commits: string | number;
371
- };
372
- WorkItem: {
373
- id: string;
204
+ DeliverableIssue: {
374
205
  source: "github" | "gitlab";
375
206
  projectKey: string;
376
207
  number: string | number;
377
208
  title: string;
378
- body: string | null;
379
209
  url: string;
380
- state: "open" | "closed" | "unknown";
381
- author: string | null;
382
- createdAt: string;
383
- updatedAt: string;
384
- iteration: {
385
- id: string | number;
386
- title: string;
387
- startDate: string | null;
388
- dueDate: string | null;
389
- state: "upcoming" | "current" | "closed" | "unknown";
210
+ deliveryState: "delivered" | "in_progress" | "not_delivered";
211
+ deliveredAt: string | null;
212
+ deliveryLabel: string | null;
213
+ attribution: {
214
+ isAssignee: boolean;
215
+ hasOwnCommit: boolean;
216
+ isMergedPRAuthor: boolean;
217
+ result: "assigned" | "committer" | "pr_author" | "none";
390
218
  } | null;
391
- milestone: string | null;
392
- assignees: string[];
393
- assigneesResolved?: {
394
- id: string;
395
- login: string;
396
- name: string | null;
397
- email: string | null;
398
- }[];
399
- labels: {
400
- name: string;
401
- color: string | null;
402
- }[];
403
219
  linkedActivities: {
404
220
  id: string;
405
221
  type: "pr" | "mr";
@@ -486,58 +302,46 @@ export interface components {
486
302
  matchEnd: string | number;
487
303
  } | null;
488
304
  }[];
489
- statusHistory: {
490
- label: {
491
- name: string;
492
- color: string | null;
493
- };
494
- action: "added" | "removed";
495
- changedAt: string;
496
- changedBy: string | null;
497
- }[];
498
- comments?: {
499
- id: string;
500
- source: "github" | "gitlab";
501
- author: string | null;
502
- createdAt: string;
503
- body: string;
504
- url: string | null;
505
- parentType: "issue" | "pr" | "mr";
506
- parentNumber: string | number;
507
- }[];
305
+ evidence: {
306
+ deliveryTransitions: {
307
+ label: {
308
+ name: string;
309
+ color: string | null;
310
+ };
311
+ action: "added" | "removed";
312
+ changedAt: string;
313
+ changedBy: string | null;
314
+ }[];
315
+ consideredCommits: {
316
+ id: string;
317
+ author: string | null;
318
+ occurredAt: string;
319
+ parentActivityId: string | null;
320
+ }[];
321
+ consideredPRs: {
322
+ id: string;
323
+ author: string | null;
324
+ mergedAt: string | null;
325
+ attributable: boolean;
326
+ }[];
327
+ };
508
328
  };
509
- WorkItemListResponse: {
510
- items: {
511
- id: string;
329
+ DeliverablesListResponse: {
330
+ issues: {
512
331
  source: "github" | "gitlab";
513
332
  projectKey: string;
514
333
  number: string | number;
515
334
  title: string;
516
- body: string | null;
517
335
  url: string;
518
- state: "open" | "closed" | "unknown";
519
- author: string | null;
520
- createdAt: string;
521
- updatedAt: string;
522
- iteration: {
523
- id: string | number;
524
- title: string;
525
- startDate: string | null;
526
- dueDate: string | null;
527
- state: "upcoming" | "current" | "closed" | "unknown";
336
+ deliveryState: "delivered" | "in_progress" | "not_delivered";
337
+ deliveredAt: string | null;
338
+ deliveryLabel: string | null;
339
+ attribution: {
340
+ isAssignee: boolean;
341
+ hasOwnCommit: boolean;
342
+ isMergedPRAuthor: boolean;
343
+ result: "assigned" | "committer" | "pr_author" | "none";
528
344
  } | null;
529
- milestone: string | null;
530
- assignees: string[];
531
- assigneesResolved?: {
532
- id: string;
533
- login: string;
534
- name: string | null;
535
- email: string | null;
536
- }[];
537
- labels: {
538
- name: string;
539
- color: string | null;
540
- }[];
541
345
  linkedActivities: {
542
346
  id: string;
543
347
  type: "pr" | "mr";
@@ -624,123 +428,927 @@ export interface components {
624
428
  matchEnd: string | number;
625
429
  } | null;
626
430
  }[];
627
- statusHistory: {
628
- label: {
629
- name: string;
630
- color: string | null;
631
- };
632
- action: "added" | "removed";
633
- changedAt: string;
634
- changedBy: string | null;
635
- }[];
636
- comments?: {
637
- id: string;
638
- source: "github" | "gitlab";
639
- author: string | null;
640
- createdAt: string;
641
- body: string;
642
- url: string | null;
643
- parentType: "issue" | "pr" | "mr";
644
- parentNumber: string | number;
645
- }[];
431
+ evidence: {
432
+ deliveryTransitions: {
433
+ label: {
434
+ name: string;
435
+ color: string | null;
436
+ };
437
+ action: "added" | "removed";
438
+ changedAt: string;
439
+ changedBy: string | null;
440
+ }[];
441
+ consideredCommits: {
442
+ id: string;
443
+ author: string | null;
444
+ occurredAt: string;
445
+ parentActivityId: string | null;
446
+ }[];
447
+ consideredPRs: {
448
+ id: string;
449
+ author: string | null;
450
+ mergedAt: string | null;
451
+ attributable: boolean;
452
+ }[];
453
+ };
454
+ }[];
455
+ };
456
+ DeliveryRules: {
457
+ source: "github" | "gitlab";
458
+ projectKey: string;
459
+ deliveryLabels: string[];
460
+ openedLabels: string[];
461
+ updatedAt: string | null;
462
+ };
463
+ DeliveryRulesPatch: {
464
+ deliveryLabels?: string[];
465
+ openedLabels?: string[];
466
+ };
467
+ ErrorResponse: {
468
+ error: string;
469
+ };
470
+ EventsListResponse: {
471
+ events: {
472
+ id: string;
473
+ source: "github" | "gitlab";
474
+ type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
475
+ repo: string;
476
+ externalId: string;
477
+ day: string;
478
+ occurredAt: string;
479
+ author: string | null;
480
+ title: string;
481
+ url: string | null;
482
+ state: string | null;
483
+ parentActivityId: string | null;
484
+ meta: {
485
+ [key: string]: unknown;
486
+ } | null;
487
+ authorResolved?: {
488
+ login: string | null;
489
+ name: string | null;
490
+ email: string | null;
491
+ };
646
492
  }[];
647
493
  total: string | number;
648
- limit: string | number;
649
- offset?: string | number;
494
+ nextCursor: string | null;
650
495
  };
651
- };
652
- responses: never;
653
- parameters: never;
654
- requestBodies: never;
655
- headers: never;
656
- pathItems: never;
657
- }
658
- export type $defs = Record<string, never>;
659
- export interface operations {
660
- "getV1Work-items": {
661
- parameters: {
662
- query?: {
663
- /** @description Filter by iteration. Values: 'current' (the GitLab native iteration in state="current", typically a 2-week sprint — NOT a calendar month), 'none' (work items without any iteration), or a numeric iteration id. For calendar-based filtering (monthly CRA, etc.), use updatedSince + updatedBefore. */
664
- iteration?: string;
665
- state?: string;
666
- source?: string;
667
- projectKey?: string;
668
- assignee?: string;
669
- /** @description Filter by issue author login (case-insensitive). Useful for CRA: list issues opened by a specific user. */
670
- author?: string;
671
- label?: string;
672
- labelScope?: string;
673
- search?: string;
674
- limit?: string;
675
- offset?: string;
676
- updatedSince?: string;
677
- updatedBefore?: string;
678
- /** @description If 'true', returns only work items where AT LEAST ONE linked open PR/MR has reviews.approvedCount === 0. Useful for dashboards showing pending review work. */
679
- withoutApproval?: string;
680
- /** @description Returns only work items where AT LEAST ONE linked PR/MR has been reviewed by the given username (case-insensitive, any state). */
681
- reviewerIs?: string;
682
- /** @description Login (case-insensitive) used to compute linkedActivities[].reviewStatus. When the viewer is in a PR's requested reviewers and no verdict is active, reviewStatus is 'open-awaiting-my-review' instead of 'open-awaiting-other-review'. */
683
- viewer?: string;
496
+ GitEvent: {
497
+ id: string;
498
+ source: "github" | "gitlab";
499
+ type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
500
+ repo: string;
501
+ externalId: string;
502
+ day: string;
503
+ occurredAt: string;
504
+ author: string | null;
505
+ title: string;
506
+ url: string | null;
507
+ state: string | null;
508
+ parentActivityId: string | null;
509
+ meta: {
510
+ [key: string]: unknown;
511
+ } | null;
512
+ authorResolved?: {
513
+ login: string | null;
514
+ name: string | null;
515
+ email: string | null;
684
516
  };
685
- header?: never;
686
- path?: never;
687
- cookie?: never;
688
517
  };
689
- requestBody?: never;
690
- responses: {
691
- 200: {
692
- headers: {
693
- [name: string]: unknown;
694
- };
695
- content: {
696
- "application/json": {
697
- items: {
698
- id: string;
699
- source: "github" | "gitlab";
700
- projectKey: string;
701
- number: string | number;
702
- title: string;
703
- body: string | null;
704
- url: string;
705
- state: "open" | "closed" | "unknown";
706
- author: string | null;
707
- createdAt: string;
708
- updatedAt: string;
709
- iteration: {
710
- id: string | number;
711
- title: string;
712
- startDate: string | null;
713
- dueDate: string | null;
714
- state: "upcoming" | "current" | "closed" | "unknown";
715
- } | null;
716
- milestone: string | null;
717
- assignees: string[];
718
- assigneesResolved?: {
719
- id: string;
720
- login: string;
721
- name: string | null;
722
- email: string | null;
723
- }[];
724
- labels: {
725
- name: string;
726
- color: string | null;
727
- }[];
728
- linkedActivities: {
729
- id: string;
730
- type: "pr" | "mr";
731
- title: string;
732
- url: string;
733
- state: "open" | "closed" | "merged" | "draft" | "unknown";
734
- isDraft: boolean;
735
- isMerged: boolean;
736
- hasConflicts: boolean;
737
- awaitingReview: boolean;
738
- author: string | null;
739
- authorResolved?: {
740
- id: string;
741
- login: string;
742
- name: string | null;
743
- email: string | null;
518
+ IterationWithCount: {
519
+ id: string | number;
520
+ title: string;
521
+ startDate: string | null;
522
+ dueDate: string | null;
523
+ state: "upcoming" | "current" | "closed" | "unknown";
524
+ workItemCount: string | number;
525
+ };
526
+ Label: {
527
+ name: string;
528
+ color: string | null;
529
+ };
530
+ LinkEvidence: {
531
+ field: string;
532
+ text: string;
533
+ matchStart: string | number;
534
+ matchEnd: string | number;
535
+ };
536
+ LinkSource: {
537
+ hintSource: string;
538
+ kind: string;
539
+ };
540
+ LinkedActivity: {
541
+ id: string;
542
+ type: "pr" | "mr";
543
+ title: string;
544
+ url: string;
545
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
546
+ isDraft: boolean;
547
+ isMerged: boolean;
548
+ hasConflicts: boolean;
549
+ awaitingReview: boolean;
550
+ author: string | null;
551
+ authorResolved?: {
552
+ id: string;
553
+ login: string;
554
+ name: string | null;
555
+ email: string | null;
556
+ } | null;
557
+ updatedAt: string;
558
+ mergedAt: string | null;
559
+ reviewRequestedAt: string | null;
560
+ volume: {
561
+ additions: string | number;
562
+ deletions: string | number;
563
+ changedFiles: string | number;
564
+ commits: string | number;
565
+ } | null;
566
+ statusHistory: {
567
+ label: {
568
+ name: string;
569
+ color: string | null;
570
+ };
571
+ action: "added" | "removed";
572
+ changedAt: string;
573
+ changedBy: string | null;
574
+ }[];
575
+ reviews: {
576
+ approvedCount: string | number;
577
+ changesRequestedCount: string | number;
578
+ commentedCount: string | number;
579
+ dismissedCount: string | number;
580
+ entries: {
581
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
582
+ reviewer: string;
583
+ reviewerResolved?: {
584
+ id: string;
585
+ login: string;
586
+ name: string | null;
587
+ email: string | null;
588
+ };
589
+ submittedAt: string;
590
+ url: string | null;
591
+ }[];
592
+ };
593
+ unresolvedThreads: {
594
+ count: string | number;
595
+ digest: {
596
+ id: string;
597
+ firstNoteAuthor: string | null;
598
+ firstNoteBody: string;
599
+ firstNoteCreatedAt: string;
600
+ url: string | null;
601
+ }[];
602
+ } | null;
603
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
604
+ linkSource?: {
605
+ hintSource: string;
606
+ kind: string;
607
+ };
608
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
609
+ linkKind?: string;
610
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
611
+ confidence?: number | null;
612
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
613
+ status?: string;
614
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
615
+ attributable?: boolean;
616
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
617
+ resolves?: boolean;
618
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
619
+ evidence?: {
620
+ field: string;
621
+ text: string;
622
+ matchStart: string | number;
623
+ matchEnd: string | number;
624
+ } | null;
625
+ };
626
+ Provider: "github" | "gitlab";
627
+ ResolvedUser: {
628
+ id: string;
629
+ login: string;
630
+ name: string | null;
631
+ email: string | null;
632
+ };
633
+ Review: {
634
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
635
+ reviewer: string;
636
+ reviewerResolved?: {
637
+ id: string;
638
+ login: string;
639
+ name: string | null;
640
+ email: string | null;
641
+ };
642
+ submittedAt: string;
643
+ url: string | null;
644
+ };
645
+ ReviewStatus: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
646
+ ReviewsSummary: {
647
+ approvedCount: string | number;
648
+ changesRequestedCount: string | number;
649
+ commentedCount: string | number;
650
+ dismissedCount: string | number;
651
+ entries: {
652
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
653
+ reviewer: string;
654
+ reviewerResolved?: {
655
+ id: string;
656
+ login: string;
657
+ name: string | null;
658
+ email: string | null;
659
+ };
660
+ submittedAt: string;
661
+ url: string | null;
662
+ }[];
663
+ };
664
+ StatusEvent: {
665
+ label: {
666
+ name: string;
667
+ color: string | null;
668
+ };
669
+ action: "added" | "removed";
670
+ changedAt: string;
671
+ changedBy: string | null;
672
+ };
673
+ ThreadDigest: {
674
+ id: string;
675
+ firstNoteAuthor: string | null;
676
+ firstNoteBody: string;
677
+ firstNoteCreatedAt: string;
678
+ url: string | null;
679
+ };
680
+ UnresolvedThreads: {
681
+ count: string | number;
682
+ digest: {
683
+ id: string;
684
+ firstNoteAuthor: string | null;
685
+ firstNoteBody: string;
686
+ firstNoteCreatedAt: string;
687
+ url: string | null;
688
+ }[];
689
+ };
690
+ Volume: {
691
+ additions: string | number;
692
+ deletions: string | number;
693
+ changedFiles: string | number;
694
+ commits: string | number;
695
+ };
696
+ WorkItem: {
697
+ id: string;
698
+ source: "github" | "gitlab";
699
+ projectKey: string;
700
+ number: string | number;
701
+ title: string;
702
+ body: string | null;
703
+ url: string;
704
+ state: "open" | "closed" | "unknown";
705
+ author: string | null;
706
+ createdAt: string;
707
+ updatedAt: string;
708
+ iteration: {
709
+ id: string | number;
710
+ title: string;
711
+ startDate: string | null;
712
+ dueDate: string | null;
713
+ state: "upcoming" | "current" | "closed" | "unknown";
714
+ } | null;
715
+ milestone: string | null;
716
+ assignees: string[];
717
+ assigneesResolved?: {
718
+ id: string;
719
+ login: string;
720
+ name: string | null;
721
+ email: string | null;
722
+ }[];
723
+ labels: {
724
+ name: string;
725
+ color: string | null;
726
+ }[];
727
+ linkedActivities: {
728
+ id: string;
729
+ type: "pr" | "mr";
730
+ title: string;
731
+ url: string;
732
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
733
+ isDraft: boolean;
734
+ isMerged: boolean;
735
+ hasConflicts: boolean;
736
+ awaitingReview: boolean;
737
+ author: string | null;
738
+ authorResolved?: {
739
+ id: string;
740
+ login: string;
741
+ name: string | null;
742
+ email: string | null;
743
+ } | null;
744
+ updatedAt: string;
745
+ mergedAt: string | null;
746
+ reviewRequestedAt: string | null;
747
+ volume: {
748
+ additions: string | number;
749
+ deletions: string | number;
750
+ changedFiles: string | number;
751
+ commits: string | number;
752
+ } | null;
753
+ statusHistory: {
754
+ label: {
755
+ name: string;
756
+ color: string | null;
757
+ };
758
+ action: "added" | "removed";
759
+ changedAt: string;
760
+ changedBy: string | null;
761
+ }[];
762
+ reviews: {
763
+ approvedCount: string | number;
764
+ changesRequestedCount: string | number;
765
+ commentedCount: string | number;
766
+ dismissedCount: string | number;
767
+ entries: {
768
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
769
+ reviewer: string;
770
+ reviewerResolved?: {
771
+ id: string;
772
+ login: string;
773
+ name: string | null;
774
+ email: string | null;
775
+ };
776
+ submittedAt: string;
777
+ url: string | null;
778
+ }[];
779
+ };
780
+ unresolvedThreads: {
781
+ count: string | number;
782
+ digest: {
783
+ id: string;
784
+ firstNoteAuthor: string | null;
785
+ firstNoteBody: string;
786
+ firstNoteCreatedAt: string;
787
+ url: string | null;
788
+ }[];
789
+ } | null;
790
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
791
+ linkSource?: {
792
+ hintSource: string;
793
+ kind: string;
794
+ };
795
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
796
+ linkKind?: string;
797
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
798
+ confidence?: number | null;
799
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
800
+ status?: string;
801
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
802
+ attributable?: boolean;
803
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
804
+ resolves?: boolean;
805
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
806
+ evidence?: {
807
+ field: string;
808
+ text: string;
809
+ matchStart: string | number;
810
+ matchEnd: string | number;
811
+ } | null;
812
+ }[];
813
+ statusHistory: {
814
+ label: {
815
+ name: string;
816
+ color: string | null;
817
+ };
818
+ action: "added" | "removed";
819
+ changedAt: string;
820
+ changedBy: string | null;
821
+ }[];
822
+ comments?: {
823
+ id: string;
824
+ source: "github" | "gitlab";
825
+ author: string | null;
826
+ createdAt: string;
827
+ body: string;
828
+ url: string | null;
829
+ parentType: "issue" | "pr" | "mr";
830
+ parentNumber: string | number;
831
+ }[];
832
+ };
833
+ WorkItemListResponse: {
834
+ items: {
835
+ id: string;
836
+ source: "github" | "gitlab";
837
+ projectKey: string;
838
+ number: string | number;
839
+ title: string;
840
+ body: string | null;
841
+ url: string;
842
+ state: "open" | "closed" | "unknown";
843
+ author: string | null;
844
+ createdAt: string;
845
+ updatedAt: string;
846
+ iteration: {
847
+ id: string | number;
848
+ title: string;
849
+ startDate: string | null;
850
+ dueDate: string | null;
851
+ state: "upcoming" | "current" | "closed" | "unknown";
852
+ } | null;
853
+ milestone: string | null;
854
+ assignees: string[];
855
+ assigneesResolved?: {
856
+ id: string;
857
+ login: string;
858
+ name: string | null;
859
+ email: string | null;
860
+ }[];
861
+ labels: {
862
+ name: string;
863
+ color: string | null;
864
+ }[];
865
+ linkedActivities: {
866
+ id: string;
867
+ type: "pr" | "mr";
868
+ title: string;
869
+ url: string;
870
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
871
+ isDraft: boolean;
872
+ isMerged: boolean;
873
+ hasConflicts: boolean;
874
+ awaitingReview: boolean;
875
+ author: string | null;
876
+ authorResolved?: {
877
+ id: string;
878
+ login: string;
879
+ name: string | null;
880
+ email: string | null;
881
+ } | null;
882
+ updatedAt: string;
883
+ mergedAt: string | null;
884
+ reviewRequestedAt: string | null;
885
+ volume: {
886
+ additions: string | number;
887
+ deletions: string | number;
888
+ changedFiles: string | number;
889
+ commits: string | number;
890
+ } | null;
891
+ statusHistory: {
892
+ label: {
893
+ name: string;
894
+ color: string | null;
895
+ };
896
+ action: "added" | "removed";
897
+ changedAt: string;
898
+ changedBy: string | null;
899
+ }[];
900
+ reviews: {
901
+ approvedCount: string | number;
902
+ changesRequestedCount: string | number;
903
+ commentedCount: string | number;
904
+ dismissedCount: string | number;
905
+ entries: {
906
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
907
+ reviewer: string;
908
+ reviewerResolved?: {
909
+ id: string;
910
+ login: string;
911
+ name: string | null;
912
+ email: string | null;
913
+ };
914
+ submittedAt: string;
915
+ url: string | null;
916
+ }[];
917
+ };
918
+ unresolvedThreads: {
919
+ count: string | number;
920
+ digest: {
921
+ id: string;
922
+ firstNoteAuthor: string | null;
923
+ firstNoteBody: string;
924
+ firstNoteCreatedAt: string;
925
+ url: string | null;
926
+ }[];
927
+ } | null;
928
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
929
+ linkSource?: {
930
+ hintSource: string;
931
+ kind: string;
932
+ };
933
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
934
+ linkKind?: string;
935
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
936
+ confidence?: number | null;
937
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
938
+ status?: string;
939
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
940
+ attributable?: boolean;
941
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
942
+ resolves?: boolean;
943
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
944
+ evidence?: {
945
+ field: string;
946
+ text: string;
947
+ matchStart: string | number;
948
+ matchEnd: string | number;
949
+ } | null;
950
+ }[];
951
+ statusHistory: {
952
+ label: {
953
+ name: string;
954
+ color: string | null;
955
+ };
956
+ action: "added" | "removed";
957
+ changedAt: string;
958
+ changedBy: string | null;
959
+ }[];
960
+ comments?: {
961
+ id: string;
962
+ source: "github" | "gitlab";
963
+ author: string | null;
964
+ createdAt: string;
965
+ body: string;
966
+ url: string | null;
967
+ parentType: "issue" | "pr" | "mr";
968
+ parentNumber: string | number;
969
+ }[];
970
+ }[];
971
+ total: string | number;
972
+ limit: string | number;
973
+ offset?: string | number;
974
+ };
975
+ };
976
+ responses: never;
977
+ parameters: never;
978
+ requestBodies: never;
979
+ headers: never;
980
+ pathItems: never;
981
+ }
982
+ export type $defs = Record<string, never>;
983
+ export interface operations {
984
+ "getV1Work-items": {
985
+ parameters: {
986
+ query?: {
987
+ /** @description Filter by iteration. Values: 'current' (the GitLab native iteration in state="current", typically a 2-week sprint — NOT a calendar month), 'none' (work items without any iteration), or a numeric iteration id. For calendar-based filtering (monthly CRA, etc.), use updatedSince + updatedBefore. */
988
+ iteration?: string;
989
+ state?: string;
990
+ source?: string;
991
+ projectKey?: string;
992
+ assignee?: string;
993
+ /** @description Filter by issue author login (case-insensitive). Useful for CRA: list issues opened by a specific user. */
994
+ author?: string;
995
+ label?: string;
996
+ labelScope?: string;
997
+ search?: string;
998
+ limit?: string;
999
+ offset?: string;
1000
+ updatedSince?: string;
1001
+ updatedBefore?: string;
1002
+ /** @description If 'true', returns only work items where AT LEAST ONE linked open PR/MR has reviews.approvedCount === 0. Useful for dashboards showing pending review work. */
1003
+ withoutApproval?: string;
1004
+ /** @description Returns only work items where AT LEAST ONE linked PR/MR has been reviewed by the given username (case-insensitive, any state). */
1005
+ reviewerIs?: string;
1006
+ /** @description Login (case-insensitive) used to compute linkedActivities[].reviewStatus. When the viewer is in a PR's requested reviewers and no verdict is active, reviewStatus is 'open-awaiting-my-review' instead of 'open-awaiting-other-review'. */
1007
+ viewer?: string;
1008
+ };
1009
+ header?: never;
1010
+ path?: never;
1011
+ cookie?: never;
1012
+ };
1013
+ requestBody?: never;
1014
+ responses: {
1015
+ 200: {
1016
+ headers: {
1017
+ [name: string]: unknown;
1018
+ };
1019
+ content: {
1020
+ "application/json": {
1021
+ items: {
1022
+ id: string;
1023
+ source: "github" | "gitlab";
1024
+ projectKey: string;
1025
+ number: string | number;
1026
+ title: string;
1027
+ body: string | null;
1028
+ url: string;
1029
+ state: "open" | "closed" | "unknown";
1030
+ author: string | null;
1031
+ createdAt: string;
1032
+ updatedAt: string;
1033
+ iteration: {
1034
+ id: string | number;
1035
+ title: string;
1036
+ startDate: string | null;
1037
+ dueDate: string | null;
1038
+ state: "upcoming" | "current" | "closed" | "unknown";
1039
+ } | null;
1040
+ milestone: string | null;
1041
+ assignees: string[];
1042
+ assigneesResolved?: {
1043
+ id: string;
1044
+ login: string;
1045
+ name: string | null;
1046
+ email: string | null;
1047
+ }[];
1048
+ labels: {
1049
+ name: string;
1050
+ color: string | null;
1051
+ }[];
1052
+ linkedActivities: {
1053
+ id: string;
1054
+ type: "pr" | "mr";
1055
+ title: string;
1056
+ url: string;
1057
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1058
+ isDraft: boolean;
1059
+ isMerged: boolean;
1060
+ hasConflicts: boolean;
1061
+ awaitingReview: boolean;
1062
+ author: string | null;
1063
+ authorResolved?: {
1064
+ id: string;
1065
+ login: string;
1066
+ name: string | null;
1067
+ email: string | null;
1068
+ } | null;
1069
+ updatedAt: string;
1070
+ mergedAt: string | null;
1071
+ reviewRequestedAt: string | null;
1072
+ volume: {
1073
+ additions: string | number;
1074
+ deletions: string | number;
1075
+ changedFiles: string | number;
1076
+ commits: string | number;
1077
+ } | null;
1078
+ statusHistory: {
1079
+ label: {
1080
+ name: string;
1081
+ color: string | null;
1082
+ };
1083
+ action: "added" | "removed";
1084
+ changedAt: string;
1085
+ changedBy: string | null;
1086
+ }[];
1087
+ reviews: {
1088
+ approvedCount: string | number;
1089
+ changesRequestedCount: string | number;
1090
+ commentedCount: string | number;
1091
+ dismissedCount: string | number;
1092
+ entries: {
1093
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
1094
+ reviewer: string;
1095
+ reviewerResolved?: {
1096
+ id: string;
1097
+ login: string;
1098
+ name: string | null;
1099
+ email: string | null;
1100
+ };
1101
+ submittedAt: string;
1102
+ url: string | null;
1103
+ }[];
1104
+ };
1105
+ unresolvedThreads: {
1106
+ count: string | number;
1107
+ digest: {
1108
+ id: string;
1109
+ firstNoteAuthor: string | null;
1110
+ firstNoteBody: string;
1111
+ firstNoteCreatedAt: string;
1112
+ url: string | null;
1113
+ }[];
1114
+ } | null;
1115
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1116
+ linkSource?: {
1117
+ hintSource: string;
1118
+ kind: string;
1119
+ };
1120
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1121
+ linkKind?: string;
1122
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1123
+ confidence?: number | null;
1124
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1125
+ status?: string;
1126
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1127
+ attributable?: boolean;
1128
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1129
+ resolves?: boolean;
1130
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1131
+ evidence?: {
1132
+ field: string;
1133
+ text: string;
1134
+ matchStart: string | number;
1135
+ matchEnd: string | number;
1136
+ } | null;
1137
+ }[];
1138
+ statusHistory: {
1139
+ label: {
1140
+ name: string;
1141
+ color: string | null;
1142
+ };
1143
+ action: "added" | "removed";
1144
+ changedAt: string;
1145
+ changedBy: string | null;
1146
+ }[];
1147
+ comments?: {
1148
+ id: string;
1149
+ source: "github" | "gitlab";
1150
+ author: string | null;
1151
+ createdAt: string;
1152
+ body: string;
1153
+ url: string | null;
1154
+ parentType: "issue" | "pr" | "mr";
1155
+ parentNumber: string | number;
1156
+ }[];
1157
+ }[];
1158
+ total: string | number;
1159
+ limit: string | number;
1160
+ offset?: string | number;
1161
+ };
1162
+ "multipart/form-data": {
1163
+ items: {
1164
+ id: string;
1165
+ source: "github" | "gitlab";
1166
+ projectKey: string;
1167
+ number: string | number;
1168
+ title: string;
1169
+ body: string | null;
1170
+ url: string;
1171
+ state: "open" | "closed" | "unknown";
1172
+ author: string | null;
1173
+ createdAt: string;
1174
+ updatedAt: string;
1175
+ iteration: {
1176
+ id: string | number;
1177
+ title: string;
1178
+ startDate: string | null;
1179
+ dueDate: string | null;
1180
+ state: "upcoming" | "current" | "closed" | "unknown";
1181
+ } | null;
1182
+ milestone: string | null;
1183
+ assignees: string[];
1184
+ assigneesResolved?: {
1185
+ id: string;
1186
+ login: string;
1187
+ name: string | null;
1188
+ email: string | null;
1189
+ }[];
1190
+ labels: {
1191
+ name: string;
1192
+ color: string | null;
1193
+ }[];
1194
+ linkedActivities: {
1195
+ id: string;
1196
+ type: "pr" | "mr";
1197
+ title: string;
1198
+ url: string;
1199
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1200
+ isDraft: boolean;
1201
+ isMerged: boolean;
1202
+ hasConflicts: boolean;
1203
+ awaitingReview: boolean;
1204
+ author: string | null;
1205
+ authorResolved?: {
1206
+ id: string;
1207
+ login: string;
1208
+ name: string | null;
1209
+ email: string | null;
1210
+ } | null;
1211
+ updatedAt: string;
1212
+ mergedAt: string | null;
1213
+ reviewRequestedAt: string | null;
1214
+ volume: {
1215
+ additions: string | number;
1216
+ deletions: string | number;
1217
+ changedFiles: string | number;
1218
+ commits: string | number;
1219
+ } | null;
1220
+ statusHistory: {
1221
+ label: {
1222
+ name: string;
1223
+ color: string | null;
1224
+ };
1225
+ action: "added" | "removed";
1226
+ changedAt: string;
1227
+ changedBy: string | null;
1228
+ }[];
1229
+ reviews: {
1230
+ approvedCount: string | number;
1231
+ changesRequestedCount: string | number;
1232
+ commentedCount: string | number;
1233
+ dismissedCount: string | number;
1234
+ entries: {
1235
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
1236
+ reviewer: string;
1237
+ reviewerResolved?: {
1238
+ id: string;
1239
+ login: string;
1240
+ name: string | null;
1241
+ email: string | null;
1242
+ };
1243
+ submittedAt: string;
1244
+ url: string | null;
1245
+ }[];
1246
+ };
1247
+ unresolvedThreads: {
1248
+ count: string | number;
1249
+ digest: {
1250
+ id: string;
1251
+ firstNoteAuthor: string | null;
1252
+ firstNoteBody: string;
1253
+ firstNoteCreatedAt: string;
1254
+ url: string | null;
1255
+ }[];
1256
+ } | null;
1257
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1258
+ linkSource?: {
1259
+ hintSource: string;
1260
+ kind: string;
1261
+ };
1262
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1263
+ linkKind?: string;
1264
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1265
+ confidence?: number | null;
1266
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1267
+ status?: string;
1268
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1269
+ attributable?: boolean;
1270
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1271
+ resolves?: boolean;
1272
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1273
+ evidence?: {
1274
+ field: string;
1275
+ text: string;
1276
+ matchStart: string | number;
1277
+ matchEnd: string | number;
1278
+ } | null;
1279
+ }[];
1280
+ statusHistory: {
1281
+ label: {
1282
+ name: string;
1283
+ color: string | null;
1284
+ };
1285
+ action: "added" | "removed";
1286
+ changedAt: string;
1287
+ changedBy: string | null;
1288
+ }[];
1289
+ comments?: {
1290
+ id: string;
1291
+ source: "github" | "gitlab";
1292
+ author: string | null;
1293
+ createdAt: string;
1294
+ body: string;
1295
+ url: string | null;
1296
+ parentType: "issue" | "pr" | "mr";
1297
+ parentNumber: string | number;
1298
+ }[];
1299
+ }[];
1300
+ total: string | number;
1301
+ limit: string | number;
1302
+ offset?: string | number;
1303
+ };
1304
+ "text/plain": {
1305
+ items: {
1306
+ id: string;
1307
+ source: "github" | "gitlab";
1308
+ projectKey: string;
1309
+ number: string | number;
1310
+ title: string;
1311
+ body: string | null;
1312
+ url: string;
1313
+ state: "open" | "closed" | "unknown";
1314
+ author: string | null;
1315
+ createdAt: string;
1316
+ updatedAt: string;
1317
+ iteration: {
1318
+ id: string | number;
1319
+ title: string;
1320
+ startDate: string | null;
1321
+ dueDate: string | null;
1322
+ state: "upcoming" | "current" | "closed" | "unknown";
1323
+ } | null;
1324
+ milestone: string | null;
1325
+ assignees: string[];
1326
+ assigneesResolved?: {
1327
+ id: string;
1328
+ login: string;
1329
+ name: string | null;
1330
+ email: string | null;
1331
+ }[];
1332
+ labels: {
1333
+ name: string;
1334
+ color: string | null;
1335
+ }[];
1336
+ linkedActivities: {
1337
+ id: string;
1338
+ type: "pr" | "mr";
1339
+ title: string;
1340
+ url: string;
1341
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1342
+ isDraft: boolean;
1343
+ isMerged: boolean;
1344
+ hasConflicts: boolean;
1345
+ awaitingReview: boolean;
1346
+ author: string | null;
1347
+ authorResolved?: {
1348
+ id: string;
1349
+ login: string;
1350
+ name: string | null;
1351
+ email: string | null;
744
1352
  } | null;
745
1353
  updatedAt: string;
746
1354
  mergedAt: string | null;
@@ -778,39 +1386,419 @@ export interface operations {
778
1386
  url: string | null;
779
1387
  }[];
780
1388
  };
781
- unresolvedThreads: {
782
- count: string | number;
783
- digest: {
1389
+ unresolvedThreads: {
1390
+ count: string | number;
1391
+ digest: {
1392
+ id: string;
1393
+ firstNoteAuthor: string | null;
1394
+ firstNoteBody: string;
1395
+ firstNoteCreatedAt: string;
1396
+ url: string | null;
1397
+ }[];
1398
+ } | null;
1399
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1400
+ linkSource?: {
1401
+ hintSource: string;
1402
+ kind: string;
1403
+ };
1404
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1405
+ linkKind?: string;
1406
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1407
+ confidence?: number | null;
1408
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1409
+ status?: string;
1410
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1411
+ attributable?: boolean;
1412
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1413
+ resolves?: boolean;
1414
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1415
+ evidence?: {
1416
+ field: string;
1417
+ text: string;
1418
+ matchStart: string | number;
1419
+ matchEnd: string | number;
1420
+ } | null;
1421
+ }[];
1422
+ statusHistory: {
1423
+ label: {
1424
+ name: string;
1425
+ color: string | null;
1426
+ };
1427
+ action: "added" | "removed";
1428
+ changedAt: string;
1429
+ changedBy: string | null;
1430
+ }[];
1431
+ comments?: {
1432
+ id: string;
1433
+ source: "github" | "gitlab";
1434
+ author: string | null;
1435
+ createdAt: string;
1436
+ body: string;
1437
+ url: string | null;
1438
+ parentType: "issue" | "pr" | "mr";
1439
+ parentNumber: string | number;
1440
+ }[];
1441
+ }[];
1442
+ total: string | number;
1443
+ limit: string | number;
1444
+ offset?: string | number;
1445
+ };
1446
+ };
1447
+ };
1448
+ };
1449
+ };
1450
+ "getV1Work-itemsBySourceByProjectKeyByNumber": {
1451
+ parameters: {
1452
+ query?: {
1453
+ /** @description Login (case-insensitive) used to compute linkedActivities[].reviewStatus. Drives the 'open-awaiting-my-review' vs 'open-awaiting-other-review' split. */
1454
+ viewer?: string;
1455
+ };
1456
+ header?: never;
1457
+ path: {
1458
+ source: string;
1459
+ projectKey: string;
1460
+ number: string;
1461
+ };
1462
+ cookie?: never;
1463
+ };
1464
+ requestBody?: never;
1465
+ responses: {
1466
+ 200: {
1467
+ headers: {
1468
+ [name: string]: unknown;
1469
+ };
1470
+ content: {
1471
+ "application/json": {
1472
+ id: string;
1473
+ source: "github" | "gitlab";
1474
+ projectKey: string;
1475
+ number: string | number;
1476
+ title: string;
1477
+ body: string | null;
1478
+ url: string;
1479
+ state: "open" | "closed" | "unknown";
1480
+ author: string | null;
1481
+ createdAt: string;
1482
+ updatedAt: string;
1483
+ iteration: {
1484
+ id: string | number;
1485
+ title: string;
1486
+ startDate: string | null;
1487
+ dueDate: string | null;
1488
+ state: "upcoming" | "current" | "closed" | "unknown";
1489
+ } | null;
1490
+ milestone: string | null;
1491
+ assignees: string[];
1492
+ assigneesResolved?: {
1493
+ id: string;
1494
+ login: string;
1495
+ name: string | null;
1496
+ email: string | null;
1497
+ }[];
1498
+ labels: {
1499
+ name: string;
1500
+ color: string | null;
1501
+ }[];
1502
+ linkedActivities: {
1503
+ id: string;
1504
+ type: "pr" | "mr";
1505
+ title: string;
1506
+ url: string;
1507
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1508
+ isDraft: boolean;
1509
+ isMerged: boolean;
1510
+ hasConflicts: boolean;
1511
+ awaitingReview: boolean;
1512
+ author: string | null;
1513
+ authorResolved?: {
1514
+ id: string;
1515
+ login: string;
1516
+ name: string | null;
1517
+ email: string | null;
1518
+ } | null;
1519
+ updatedAt: string;
1520
+ mergedAt: string | null;
1521
+ reviewRequestedAt: string | null;
1522
+ volume: {
1523
+ additions: string | number;
1524
+ deletions: string | number;
1525
+ changedFiles: string | number;
1526
+ commits: string | number;
1527
+ } | null;
1528
+ statusHistory: {
1529
+ label: {
1530
+ name: string;
1531
+ color: string | null;
1532
+ };
1533
+ action: "added" | "removed";
1534
+ changedAt: string;
1535
+ changedBy: string | null;
1536
+ }[];
1537
+ reviews: {
1538
+ approvedCount: string | number;
1539
+ changesRequestedCount: string | number;
1540
+ commentedCount: string | number;
1541
+ dismissedCount: string | number;
1542
+ entries: {
1543
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
1544
+ reviewer: string;
1545
+ reviewerResolved?: {
784
1546
  id: string;
785
- firstNoteAuthor: string | null;
786
- firstNoteBody: string;
787
- firstNoteCreatedAt: string;
788
- url: string | null;
789
- }[];
790
- } | null;
791
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
792
- linkSource?: {
793
- hintSource: string;
794
- kind: string;
1547
+ login: string;
1548
+ name: string | null;
1549
+ email: string | null;
1550
+ };
1551
+ submittedAt: string;
1552
+ url: string | null;
1553
+ }[];
1554
+ };
1555
+ unresolvedThreads: {
1556
+ count: string | number;
1557
+ digest: {
1558
+ id: string;
1559
+ firstNoteAuthor: string | null;
1560
+ firstNoteBody: string;
1561
+ firstNoteCreatedAt: string;
1562
+ url: string | null;
1563
+ }[];
1564
+ } | null;
1565
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1566
+ linkSource?: {
1567
+ hintSource: string;
1568
+ kind: string;
1569
+ };
1570
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1571
+ linkKind?: string;
1572
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1573
+ confidence?: number | null;
1574
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1575
+ status?: string;
1576
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1577
+ attributable?: boolean;
1578
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1579
+ resolves?: boolean;
1580
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1581
+ evidence?: {
1582
+ field: string;
1583
+ text: string;
1584
+ matchStart: string | number;
1585
+ matchEnd: string | number;
1586
+ } | null;
1587
+ }[];
1588
+ statusHistory: {
1589
+ label: {
1590
+ name: string;
1591
+ color: string | null;
1592
+ };
1593
+ action: "added" | "removed";
1594
+ changedAt: string;
1595
+ changedBy: string | null;
1596
+ }[];
1597
+ comments?: {
1598
+ id: string;
1599
+ source: "github" | "gitlab";
1600
+ author: string | null;
1601
+ createdAt: string;
1602
+ body: string;
1603
+ url: string | null;
1604
+ parentType: "issue" | "pr" | "mr";
1605
+ parentNumber: string | number;
1606
+ }[];
1607
+ };
1608
+ "multipart/form-data": {
1609
+ id: string;
1610
+ source: "github" | "gitlab";
1611
+ projectKey: string;
1612
+ number: string | number;
1613
+ title: string;
1614
+ body: string | null;
1615
+ url: string;
1616
+ state: "open" | "closed" | "unknown";
1617
+ author: string | null;
1618
+ createdAt: string;
1619
+ updatedAt: string;
1620
+ iteration: {
1621
+ id: string | number;
1622
+ title: string;
1623
+ startDate: string | null;
1624
+ dueDate: string | null;
1625
+ state: "upcoming" | "current" | "closed" | "unknown";
1626
+ } | null;
1627
+ milestone: string | null;
1628
+ assignees: string[];
1629
+ assigneesResolved?: {
1630
+ id: string;
1631
+ login: string;
1632
+ name: string | null;
1633
+ email: string | null;
1634
+ }[];
1635
+ labels: {
1636
+ name: string;
1637
+ color: string | null;
1638
+ }[];
1639
+ linkedActivities: {
1640
+ id: string;
1641
+ type: "pr" | "mr";
1642
+ title: string;
1643
+ url: string;
1644
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1645
+ isDraft: boolean;
1646
+ isMerged: boolean;
1647
+ hasConflicts: boolean;
1648
+ awaitingReview: boolean;
1649
+ author: string | null;
1650
+ authorResolved?: {
1651
+ id: string;
1652
+ login: string;
1653
+ name: string | null;
1654
+ email: string | null;
1655
+ } | null;
1656
+ updatedAt: string;
1657
+ mergedAt: string | null;
1658
+ reviewRequestedAt: string | null;
1659
+ volume: {
1660
+ additions: string | number;
1661
+ deletions: string | number;
1662
+ changedFiles: string | number;
1663
+ commits: string | number;
1664
+ } | null;
1665
+ statusHistory: {
1666
+ label: {
1667
+ name: string;
1668
+ color: string | null;
795
1669
  };
796
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
797
- linkKind?: string;
798
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
799
- confidence?: number | null;
800
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
801
- status?: string;
802
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
803
- attributable?: boolean;
804
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
805
- resolves?: boolean;
806
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
807
- evidence?: {
808
- field: string;
809
- text: string;
810
- matchStart: string | number;
811
- matchEnd: string | number;
812
- } | null;
1670
+ action: "added" | "removed";
1671
+ changedAt: string;
1672
+ changedBy: string | null;
813
1673
  }[];
1674
+ reviews: {
1675
+ approvedCount: string | number;
1676
+ changesRequestedCount: string | number;
1677
+ commentedCount: string | number;
1678
+ dismissedCount: string | number;
1679
+ entries: {
1680
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
1681
+ reviewer: string;
1682
+ reviewerResolved?: {
1683
+ id: string;
1684
+ login: string;
1685
+ name: string | null;
1686
+ email: string | null;
1687
+ };
1688
+ submittedAt: string;
1689
+ url: string | null;
1690
+ }[];
1691
+ };
1692
+ unresolvedThreads: {
1693
+ count: string | number;
1694
+ digest: {
1695
+ id: string;
1696
+ firstNoteAuthor: string | null;
1697
+ firstNoteBody: string;
1698
+ firstNoteCreatedAt: string;
1699
+ url: string | null;
1700
+ }[];
1701
+ } | null;
1702
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1703
+ linkSource?: {
1704
+ hintSource: string;
1705
+ kind: string;
1706
+ };
1707
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1708
+ linkKind?: string;
1709
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1710
+ confidence?: number | null;
1711
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1712
+ status?: string;
1713
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1714
+ attributable?: boolean;
1715
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1716
+ resolves?: boolean;
1717
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1718
+ evidence?: {
1719
+ field: string;
1720
+ text: string;
1721
+ matchStart: string | number;
1722
+ matchEnd: string | number;
1723
+ } | null;
1724
+ }[];
1725
+ statusHistory: {
1726
+ label: {
1727
+ name: string;
1728
+ color: string | null;
1729
+ };
1730
+ action: "added" | "removed";
1731
+ changedAt: string;
1732
+ changedBy: string | null;
1733
+ }[];
1734
+ comments?: {
1735
+ id: string;
1736
+ source: "github" | "gitlab";
1737
+ author: string | null;
1738
+ createdAt: string;
1739
+ body: string;
1740
+ url: string | null;
1741
+ parentType: "issue" | "pr" | "mr";
1742
+ parentNumber: string | number;
1743
+ }[];
1744
+ };
1745
+ "text/plain": {
1746
+ id: string;
1747
+ source: "github" | "gitlab";
1748
+ projectKey: string;
1749
+ number: string | number;
1750
+ title: string;
1751
+ body: string | null;
1752
+ url: string;
1753
+ state: "open" | "closed" | "unknown";
1754
+ author: string | null;
1755
+ createdAt: string;
1756
+ updatedAt: string;
1757
+ iteration: {
1758
+ id: string | number;
1759
+ title: string;
1760
+ startDate: string | null;
1761
+ dueDate: string | null;
1762
+ state: "upcoming" | "current" | "closed" | "unknown";
1763
+ } | null;
1764
+ milestone: string | null;
1765
+ assignees: string[];
1766
+ assigneesResolved?: {
1767
+ id: string;
1768
+ login: string;
1769
+ name: string | null;
1770
+ email: string | null;
1771
+ }[];
1772
+ labels: {
1773
+ name: string;
1774
+ color: string | null;
1775
+ }[];
1776
+ linkedActivities: {
1777
+ id: string;
1778
+ type: "pr" | "mr";
1779
+ title: string;
1780
+ url: string;
1781
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
1782
+ isDraft: boolean;
1783
+ isMerged: boolean;
1784
+ hasConflicts: boolean;
1785
+ awaitingReview: boolean;
1786
+ author: string | null;
1787
+ authorResolved?: {
1788
+ id: string;
1789
+ login: string;
1790
+ name: string | null;
1791
+ email: string | null;
1792
+ } | null;
1793
+ updatedAt: string;
1794
+ mergedAt: string | null;
1795
+ reviewRequestedAt: string | null;
1796
+ volume: {
1797
+ additions: string | number;
1798
+ deletions: string | number;
1799
+ changedFiles: string | number;
1800
+ commits: string | number;
1801
+ } | null;
814
1802
  statusHistory: {
815
1803
  label: {
816
1804
  name: string;
@@ -820,195 +1808,424 @@ export interface operations {
820
1808
  changedAt: string;
821
1809
  changedBy: string | null;
822
1810
  }[];
823
- comments?: {
824
- id: string;
825
- source: "github" | "gitlab";
826
- author: string | null;
827
- createdAt: string;
828
- body: string;
829
- url: string | null;
830
- parentType: "issue" | "pr" | "mr";
831
- parentNumber: string | number;
832
- }[];
1811
+ reviews: {
1812
+ approvedCount: string | number;
1813
+ changesRequestedCount: string | number;
1814
+ commentedCount: string | number;
1815
+ dismissedCount: string | number;
1816
+ entries: {
1817
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
1818
+ reviewer: string;
1819
+ reviewerResolved?: {
1820
+ id: string;
1821
+ login: string;
1822
+ name: string | null;
1823
+ email: string | null;
1824
+ };
1825
+ submittedAt: string;
1826
+ url: string | null;
1827
+ }[];
1828
+ };
1829
+ unresolvedThreads: {
1830
+ count: string | number;
1831
+ digest: {
1832
+ id: string;
1833
+ firstNoteAuthor: string | null;
1834
+ firstNoteBody: string;
1835
+ firstNoteCreatedAt: string;
1836
+ url: string | null;
1837
+ }[];
1838
+ } | null;
1839
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1840
+ linkSource?: {
1841
+ hintSource: string;
1842
+ kind: string;
1843
+ };
1844
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1845
+ linkKind?: string;
1846
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1847
+ confidence?: number | null;
1848
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1849
+ status?: string;
1850
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1851
+ attributable?: boolean;
1852
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1853
+ resolves?: boolean;
1854
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1855
+ evidence?: {
1856
+ field: string;
1857
+ text: string;
1858
+ matchStart: string | number;
1859
+ matchEnd: string | number;
1860
+ } | null;
1861
+ }[];
1862
+ statusHistory: {
1863
+ label: {
1864
+ name: string;
1865
+ color: string | null;
1866
+ };
1867
+ action: "added" | "removed";
1868
+ changedAt: string;
1869
+ changedBy: string | null;
1870
+ }[];
1871
+ comments?: {
1872
+ id: string;
1873
+ source: "github" | "gitlab";
1874
+ author: string | null;
1875
+ createdAt: string;
1876
+ body: string;
1877
+ url: string | null;
1878
+ parentType: "issue" | "pr" | "mr";
1879
+ parentNumber: string | number;
1880
+ }[];
1881
+ };
1882
+ };
1883
+ };
1884
+ 400: {
1885
+ headers: {
1886
+ [name: string]: unknown;
1887
+ };
1888
+ content: {
1889
+ "application/json": {
1890
+ error: string;
1891
+ };
1892
+ "multipart/form-data": {
1893
+ error: string;
1894
+ };
1895
+ "text/plain": {
1896
+ error: string;
1897
+ };
1898
+ };
1899
+ };
1900
+ 404: {
1901
+ headers: {
1902
+ [name: string]: unknown;
1903
+ };
1904
+ content: {
1905
+ "application/json": {
1906
+ error: string;
1907
+ };
1908
+ "multipart/form-data": {
1909
+ error: string;
1910
+ };
1911
+ "text/plain": {
1912
+ error: string;
1913
+ };
1914
+ };
1915
+ };
1916
+ };
1917
+ };
1918
+ getV1Iterations: {
1919
+ parameters: {
1920
+ query?: {
1921
+ state?: string;
1922
+ };
1923
+ header?: never;
1924
+ path?: never;
1925
+ cookie?: never;
1926
+ };
1927
+ requestBody?: never;
1928
+ responses: {
1929
+ 200: {
1930
+ headers: {
1931
+ [name: string]: unknown;
1932
+ };
1933
+ content: {
1934
+ "application/json": {
1935
+ id: string | number;
1936
+ title: string;
1937
+ startDate: string | null;
1938
+ dueDate: string | null;
1939
+ state: "upcoming" | "current" | "closed" | "unknown";
1940
+ workItemCount: string | number;
1941
+ }[];
1942
+ "multipart/form-data": {
1943
+ id: string | number;
1944
+ title: string;
1945
+ startDate: string | null;
1946
+ dueDate: string | null;
1947
+ state: "upcoming" | "current" | "closed" | "unknown";
1948
+ workItemCount: string | number;
1949
+ }[];
1950
+ "text/plain": {
1951
+ id: string | number;
1952
+ title: string;
1953
+ startDate: string | null;
1954
+ dueDate: string | null;
1955
+ state: "upcoming" | "current" | "closed" | "unknown";
1956
+ workItemCount: string | number;
1957
+ }[];
1958
+ };
1959
+ };
1960
+ };
1961
+ };
1962
+ getV1Events: {
1963
+ parameters: {
1964
+ query?: {
1965
+ /** @description Inclusive lower bound, YYYY-MM-DD (Paris-TZ day). Required. */
1966
+ from?: string;
1967
+ /** @description Inclusive upper bound, YYYY-MM-DD (Paris-TZ day). Required. */
1968
+ to?: string;
1969
+ /** @description Filter by author (case-insensitive). */
1970
+ user?: string;
1971
+ repo?: string;
1972
+ /** @description CSV: commit,comment,review,state-transition */
1973
+ type?: string;
1974
+ /** @description github | gitlab */
1975
+ provider?: string;
1976
+ /** @description Default 500, max 1000. */
1977
+ limit?: string;
1978
+ /** @description Opaque cursor from previous nextCursor. */
1979
+ cursor?: string;
1980
+ /** @description ISO datetime; returns only events with occurredAt > since. Combines with from/to. */
1981
+ since?: string;
1982
+ };
1983
+ header?: never;
1984
+ path?: never;
1985
+ cookie?: never;
1986
+ };
1987
+ requestBody?: never;
1988
+ responses: {
1989
+ 200: {
1990
+ headers: {
1991
+ [name: string]: unknown;
1992
+ };
1993
+ content: {
1994
+ "application/json": {
1995
+ events: {
1996
+ id: string;
1997
+ source: "github" | "gitlab";
1998
+ type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
1999
+ repo: string;
2000
+ externalId: string;
2001
+ day: string;
2002
+ occurredAt: string;
2003
+ author: string | null;
2004
+ title: string;
2005
+ url: string | null;
2006
+ state: string | null;
2007
+ parentActivityId: string | null;
2008
+ meta: {
2009
+ [key: string]: unknown;
2010
+ } | null;
2011
+ authorResolved?: {
2012
+ login: string | null;
2013
+ name: string | null;
2014
+ email: string | null;
2015
+ };
833
2016
  }[];
834
2017
  total: string | number;
835
- limit: string | number;
836
- offset?: string | number;
2018
+ nextCursor: string | null;
837
2019
  };
838
2020
  "multipart/form-data": {
839
- items: {
2021
+ events: {
840
2022
  id: string;
841
2023
  source: "github" | "gitlab";
842
- projectKey: string;
843
- number: string | number;
2024
+ type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
2025
+ repo: string;
2026
+ externalId: string;
2027
+ day: string;
2028
+ occurredAt: string;
2029
+ author: string | null;
844
2030
  title: string;
845
- body: string | null;
846
- url: string;
847
- state: "open" | "closed" | "unknown";
2031
+ url: string | null;
2032
+ state: string | null;
2033
+ parentActivityId: string | null;
2034
+ meta: {
2035
+ [key: string]: unknown;
2036
+ } | null;
2037
+ authorResolved?: {
2038
+ login: string | null;
2039
+ name: string | null;
2040
+ email: string | null;
2041
+ };
2042
+ }[];
2043
+ total: string | number;
2044
+ nextCursor: string | null;
2045
+ };
2046
+ "text/plain": {
2047
+ events: {
2048
+ id: string;
2049
+ source: "github" | "gitlab";
2050
+ type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
2051
+ repo: string;
2052
+ externalId: string;
2053
+ day: string;
2054
+ occurredAt: string;
848
2055
  author: string | null;
849
- createdAt: string;
850
- updatedAt: string;
851
- iteration: {
852
- id: string | number;
853
- title: string;
854
- startDate: string | null;
855
- dueDate: string | null;
856
- state: "upcoming" | "current" | "closed" | "unknown";
2056
+ title: string;
2057
+ url: string | null;
2058
+ state: string | null;
2059
+ parentActivityId: string | null;
2060
+ meta: {
2061
+ [key: string]: unknown;
857
2062
  } | null;
858
- milestone: string | null;
859
- assignees: string[];
860
- assigneesResolved?: {
861
- id: string;
862
- login: string;
2063
+ authorResolved?: {
2064
+ login: string | null;
863
2065
  name: string | null;
864
2066
  email: string | null;
865
- }[];
866
- labels: {
867
- name: string;
868
- color: string | null;
869
- }[];
870
- linkedActivities: {
871
- id: string;
872
- type: "pr" | "mr";
873
- title: string;
874
- url: string;
875
- state: "open" | "closed" | "merged" | "draft" | "unknown";
876
- isDraft: boolean;
877
- isMerged: boolean;
878
- hasConflicts: boolean;
879
- awaitingReview: boolean;
880
- author: string | null;
881
- authorResolved?: {
882
- id: string;
883
- login: string;
884
- name: string | null;
885
- email: string | null;
886
- } | null;
887
- updatedAt: string;
888
- mergedAt: string | null;
889
- reviewRequestedAt: string | null;
890
- volume: {
891
- additions: string | number;
892
- deletions: string | number;
893
- changedFiles: string | number;
894
- commits: string | number;
895
- } | null;
896
- statusHistory: {
897
- label: {
898
- name: string;
899
- color: string | null;
900
- };
901
- action: "added" | "removed";
902
- changedAt: string;
903
- changedBy: string | null;
904
- }[];
905
- reviews: {
906
- approvedCount: string | number;
907
- changesRequestedCount: string | number;
908
- commentedCount: string | number;
909
- dismissedCount: string | number;
910
- entries: {
911
- state: "approved" | "changes_requested" | "commented" | "dismissed";
912
- reviewer: string;
913
- reviewerResolved?: {
914
- id: string;
915
- login: string;
916
- name: string | null;
917
- email: string | null;
918
- };
919
- submittedAt: string;
920
- url: string | null;
921
- }[];
922
- };
923
- unresolvedThreads: {
924
- count: string | number;
925
- digest: {
926
- id: string;
927
- firstNoteAuthor: string | null;
928
- firstNoteBody: string;
929
- firstNoteCreatedAt: string;
930
- url: string | null;
931
- }[];
932
- } | null;
933
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
934
- linkSource?: {
935
- hintSource: string;
936
- kind: string;
937
- };
938
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
939
- linkKind?: string;
940
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
941
- confidence?: number | null;
942
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
943
- status?: string;
944
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
945
- attributable?: boolean;
946
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
947
- resolves?: boolean;
948
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
949
- evidence?: {
950
- field: string;
951
- text: string;
952
- matchStart: string | number;
953
- matchEnd: string | number;
954
- } | null;
955
- }[];
956
- statusHistory: {
957
- label: {
958
- name: string;
959
- color: string | null;
960
- };
961
- action: "added" | "removed";
962
- changedAt: string;
963
- changedBy: string | null;
964
- }[];
965
- comments?: {
966
- id: string;
967
- source: "github" | "gitlab";
968
- author: string | null;
969
- createdAt: string;
970
- body: string;
971
- url: string | null;
972
- parentType: "issue" | "pr" | "mr";
973
- parentNumber: string | number;
974
- }[];
2067
+ };
2068
+ }[];
2069
+ total: string | number;
2070
+ nextCursor: string | null;
2071
+ };
2072
+ };
2073
+ };
2074
+ 400: {
2075
+ headers: {
2076
+ [name: string]: unknown;
2077
+ };
2078
+ content: {
2079
+ "application/json": {
2080
+ error: string;
2081
+ };
2082
+ "multipart/form-data": {
2083
+ error: string;
2084
+ };
2085
+ "text/plain": {
2086
+ error: string;
2087
+ };
2088
+ };
2089
+ };
2090
+ };
2091
+ };
2092
+ getV1Activities: {
2093
+ parameters: {
2094
+ query?: {
2095
+ /** @description Exact match (case-insensitive) on the activity author's GitHub/GitLab login. Does NOT match display names. */
2096
+ author?: string;
2097
+ /** @description CSV: open,draft,merged,closed,unknown. Default returns all states. */
2098
+ state?: string;
2099
+ /** @description CSV: pr,mr,issue. Default returns all. */
2100
+ type?: string;
2101
+ repo?: string;
2102
+ /** @description github | gitlab */
2103
+ provider?: string;
2104
+ /** @description ISO datetime; activity.updatedAt >= since. */
2105
+ updatedSince?: string;
2106
+ /** @description ISO datetime; activity.updatedAt < before. */
2107
+ updatedBefore?: string;
2108
+ /** @description Default 100, max 500. */
2109
+ limit?: string;
2110
+ /** @description Default 0. */
2111
+ offset?: string;
2112
+ };
2113
+ header?: never;
2114
+ path?: never;
2115
+ cookie?: never;
2116
+ };
2117
+ requestBody?: never;
2118
+ responses: {
2119
+ 200: {
2120
+ headers: {
2121
+ [name: string]: unknown;
2122
+ };
2123
+ content: {
2124
+ "application/json": {
2125
+ items: {
2126
+ id: string;
2127
+ source: "github" | "gitlab";
2128
+ repo: string;
2129
+ type: "pr" | "mr" | "issue";
2130
+ number: string | number;
2131
+ title: string;
2132
+ body: string | null;
2133
+ url: string;
2134
+ state: "open" | "draft" | "merged" | "closed" | "unknown";
2135
+ author: string | null;
2136
+ createdAt: string;
2137
+ updatedAt: string;
2138
+ mergedAt: string | null;
975
2139
  }[];
976
2140
  total: string | number;
977
2141
  limit: string | number;
978
- offset?: string | number;
2142
+ offset: string | number;
2143
+ };
2144
+ "multipart/form-data": {
2145
+ items: {
2146
+ id: string;
2147
+ source: "github" | "gitlab";
2148
+ repo: string;
2149
+ type: "pr" | "mr" | "issue";
2150
+ number: string | number;
2151
+ title: string;
2152
+ body: string | null;
2153
+ url: string;
2154
+ state: "open" | "draft" | "merged" | "closed" | "unknown";
2155
+ author: string | null;
2156
+ createdAt: string;
2157
+ updatedAt: string;
2158
+ mergedAt: string | null;
2159
+ }[];
2160
+ total: string | number;
2161
+ limit: string | number;
2162
+ offset: string | number;
979
2163
  };
980
2164
  "text/plain": {
981
2165
  items: {
982
2166
  id: string;
983
2167
  source: "github" | "gitlab";
984
- projectKey: string;
2168
+ repo: string;
2169
+ type: "pr" | "mr" | "issue";
985
2170
  number: string | number;
986
2171
  title: string;
987
2172
  body: string | null;
988
2173
  url: string;
989
- state: "open" | "closed" | "unknown";
2174
+ state: "open" | "draft" | "merged" | "closed" | "unknown";
990
2175
  author: string | null;
991
2176
  createdAt: string;
992
2177
  updatedAt: string;
993
- iteration: {
994
- id: string | number;
995
- title: string;
996
- startDate: string | null;
997
- dueDate: string | null;
998
- state: "upcoming" | "current" | "closed" | "unknown";
2178
+ mergedAt: string | null;
2179
+ }[];
2180
+ total: string | number;
2181
+ limit: string | number;
2182
+ offset: string | number;
2183
+ };
2184
+ };
2185
+ };
2186
+ };
2187
+ };
2188
+ getV1Deliverables: {
2189
+ parameters: {
2190
+ query?: {
2191
+ /** @description Window start, ISO date (YYYY-MM-DD) or datetime. Required. */
2192
+ from?: string;
2193
+ /** @description Window end, ISO date (YYYY-MM-DD, inclusive end-of-day) or datetime. Required. */
2194
+ to?: string;
2195
+ /** @description CSV of project keys to restrict to. */
2196
+ projectKey?: string;
2197
+ /** @description CSV of author login aliases (case-insensitive). When set, only issues attributable to one of the aliases are returned and `attribution` is populated; when absent, all window deliverables are returned with `attribution: null`. */
2198
+ author?: string;
2199
+ /** @description github | gitlab. */
2200
+ source?: string;
2201
+ };
2202
+ header?: never;
2203
+ path?: never;
2204
+ cookie?: never;
2205
+ };
2206
+ requestBody?: never;
2207
+ responses: {
2208
+ 200: {
2209
+ headers: {
2210
+ [name: string]: unknown;
2211
+ };
2212
+ content: {
2213
+ "application/json": {
2214
+ issues: {
2215
+ source: "github" | "gitlab";
2216
+ projectKey: string;
2217
+ number: string | number;
2218
+ title: string;
2219
+ url: string;
2220
+ deliveryState: "delivered" | "in_progress" | "not_delivered";
2221
+ deliveredAt: string | null;
2222
+ deliveryLabel: string | null;
2223
+ attribution: {
2224
+ isAssignee: boolean;
2225
+ hasOwnCommit: boolean;
2226
+ isMergedPRAuthor: boolean;
2227
+ result: "assigned" | "committer" | "pr_author" | "none";
999
2228
  } | null;
1000
- milestone: string | null;
1001
- assignees: string[];
1002
- assigneesResolved?: {
1003
- id: string;
1004
- login: string;
1005
- name: string | null;
1006
- email: string | null;
1007
- }[];
1008
- labels: {
1009
- name: string;
1010
- color: string | null;
1011
- }[];
1012
2229
  linkedActivities: {
1013
2230
  id: string;
1014
2231
  type: "pr" | "mr";
@@ -1095,485 +2312,288 @@ export interface operations {
1095
2312
  matchEnd: string | number;
1096
2313
  } | null;
1097
2314
  }[];
1098
- statusHistory: {
1099
- label: {
1100
- name: string;
1101
- color: string | null;
1102
- };
1103
- action: "added" | "removed";
1104
- changedAt: string;
1105
- changedBy: string | null;
1106
- }[];
1107
- comments?: {
1108
- id: string;
1109
- source: "github" | "gitlab";
1110
- author: string | null;
1111
- createdAt: string;
1112
- body: string;
1113
- url: string | null;
1114
- parentType: "issue" | "pr" | "mr";
1115
- parentNumber: string | number;
1116
- }[];
1117
- }[];
1118
- total: string | number;
1119
- limit: string | number;
1120
- offset?: string | number;
1121
- };
1122
- };
1123
- };
1124
- };
1125
- };
1126
- "getV1Work-itemsBySourceByProjectKeyByNumber": {
1127
- parameters: {
1128
- query?: {
1129
- /** @description Login (case-insensitive) used to compute linkedActivities[].reviewStatus. Drives the 'open-awaiting-my-review' vs 'open-awaiting-other-review' split. */
1130
- viewer?: string;
1131
- };
1132
- header?: never;
1133
- path: {
1134
- source: string;
1135
- projectKey: string;
1136
- number: string;
1137
- };
1138
- cookie?: never;
1139
- };
1140
- requestBody?: never;
1141
- responses: {
1142
- 200: {
1143
- headers: {
1144
- [name: string]: unknown;
1145
- };
1146
- content: {
1147
- "application/json": {
1148
- id: string;
1149
- source: "github" | "gitlab";
1150
- projectKey: string;
1151
- number: string | number;
1152
- title: string;
1153
- body: string | null;
1154
- url: string;
1155
- state: "open" | "closed" | "unknown";
1156
- author: string | null;
1157
- createdAt: string;
1158
- updatedAt: string;
1159
- iteration: {
1160
- id: string | number;
1161
- title: string;
1162
- startDate: string | null;
1163
- dueDate: string | null;
1164
- state: "upcoming" | "current" | "closed" | "unknown";
1165
- } | null;
1166
- milestone: string | null;
1167
- assignees: string[];
1168
- assigneesResolved?: {
1169
- id: string;
1170
- login: string;
1171
- name: string | null;
1172
- email: string | null;
1173
- }[];
1174
- labels: {
1175
- name: string;
1176
- color: string | null;
1177
- }[];
1178
- linkedActivities: {
1179
- id: string;
1180
- type: "pr" | "mr";
1181
- title: string;
1182
- url: string;
1183
- state: "open" | "closed" | "merged" | "draft" | "unknown";
1184
- isDraft: boolean;
1185
- isMerged: boolean;
1186
- hasConflicts: boolean;
1187
- awaitingReview: boolean;
1188
- author: string | null;
1189
- authorResolved?: {
1190
- id: string;
1191
- login: string;
1192
- name: string | null;
1193
- email: string | null;
1194
- } | null;
1195
- updatedAt: string;
1196
- mergedAt: string | null;
1197
- reviewRequestedAt: string | null;
1198
- volume: {
1199
- additions: string | number;
1200
- deletions: string | number;
1201
- changedFiles: string | number;
1202
- commits: string | number;
1203
- } | null;
1204
- statusHistory: {
1205
- label: {
1206
- name: string;
1207
- color: string | null;
1208
- };
1209
- action: "added" | "removed";
1210
- changedAt: string;
1211
- changedBy: string | null;
1212
- }[];
1213
- reviews: {
1214
- approvedCount: string | number;
1215
- changesRequestedCount: string | number;
1216
- commentedCount: string | number;
1217
- dismissedCount: string | number;
1218
- entries: {
1219
- state: "approved" | "changes_requested" | "commented" | "dismissed";
1220
- reviewer: string;
1221
- reviewerResolved?: {
1222
- id: string;
1223
- login: string;
1224
- name: string | null;
1225
- email: string | null;
2315
+ evidence: {
2316
+ deliveryTransitions: {
2317
+ label: {
2318
+ name: string;
2319
+ color: string | null;
1226
2320
  };
1227
- submittedAt: string;
1228
- url: string | null;
2321
+ action: "added" | "removed";
2322
+ changedAt: string;
2323
+ changedBy: string | null;
2324
+ }[];
2325
+ consideredCommits: {
2326
+ id: string;
2327
+ author: string | null;
2328
+ occurredAt: string;
2329
+ parentActivityId: string | null;
1229
2330
  }[];
1230
- };
1231
- unresolvedThreads: {
1232
- count: string | number;
1233
- digest: {
2331
+ consideredPRs: {
1234
2332
  id: string;
1235
- firstNoteAuthor: string | null;
1236
- firstNoteBody: string;
1237
- firstNoteCreatedAt: string;
1238
- url: string | null;
2333
+ author: string | null;
2334
+ mergedAt: string | null;
2335
+ attributable: boolean;
1239
2336
  }[];
1240
- } | null;
1241
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1242
- linkSource?: {
1243
- hintSource: string;
1244
- kind: string;
1245
- };
1246
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1247
- linkKind?: string;
1248
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1249
- confidence?: number | null;
1250
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1251
- status?: string;
1252
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1253
- attributable?: boolean;
1254
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1255
- resolves?: boolean;
1256
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1257
- evidence?: {
1258
- field: string;
1259
- text: string;
1260
- matchStart: string | number;
1261
- matchEnd: string | number;
1262
- } | null;
1263
- }[];
1264
- statusHistory: {
1265
- label: {
1266
- name: string;
1267
- color: string | null;
1268
2337
  };
1269
- action: "added" | "removed";
1270
- changedAt: string;
1271
- changedBy: string | null;
1272
- }[];
1273
- comments?: {
1274
- id: string;
1275
- source: "github" | "gitlab";
1276
- author: string | null;
1277
- createdAt: string;
1278
- body: string;
1279
- url: string | null;
1280
- parentType: "issue" | "pr" | "mr";
1281
- parentNumber: string | number;
1282
2338
  }[];
1283
2339
  };
1284
2340
  "multipart/form-data": {
1285
- id: string;
1286
- source: "github" | "gitlab";
1287
- projectKey: string;
1288
- number: string | number;
1289
- title: string;
1290
- body: string | null;
1291
- url: string;
1292
- state: "open" | "closed" | "unknown";
1293
- author: string | null;
1294
- createdAt: string;
1295
- updatedAt: string;
1296
- iteration: {
1297
- id: string | number;
1298
- title: string;
1299
- startDate: string | null;
1300
- dueDate: string | null;
1301
- state: "upcoming" | "current" | "closed" | "unknown";
1302
- } | null;
1303
- milestone: string | null;
1304
- assignees: string[];
1305
- assigneesResolved?: {
1306
- id: string;
1307
- login: string;
1308
- name: string | null;
1309
- email: string | null;
1310
- }[];
1311
- labels: {
1312
- name: string;
1313
- color: string | null;
1314
- }[];
1315
- linkedActivities: {
1316
- id: string;
1317
- type: "pr" | "mr";
2341
+ issues: {
2342
+ source: "github" | "gitlab";
2343
+ projectKey: string;
2344
+ number: string | number;
1318
2345
  title: string;
1319
2346
  url: string;
1320
- state: "open" | "closed" | "merged" | "draft" | "unknown";
1321
- isDraft: boolean;
1322
- isMerged: boolean;
1323
- hasConflicts: boolean;
1324
- awaitingReview: boolean;
1325
- author: string | null;
1326
- authorResolved?: {
1327
- id: string;
1328
- login: string;
1329
- name: string | null;
1330
- email: string | null;
1331
- } | null;
1332
- updatedAt: string;
1333
- mergedAt: string | null;
1334
- reviewRequestedAt: string | null;
1335
- volume: {
1336
- additions: string | number;
1337
- deletions: string | number;
1338
- changedFiles: string | number;
1339
- commits: string | number;
2347
+ deliveryState: "delivered" | "in_progress" | "not_delivered";
2348
+ deliveredAt: string | null;
2349
+ deliveryLabel: string | null;
2350
+ attribution: {
2351
+ isAssignee: boolean;
2352
+ hasOwnCommit: boolean;
2353
+ isMergedPRAuthor: boolean;
2354
+ result: "assigned" | "committer" | "pr_author" | "none";
1340
2355
  } | null;
1341
- statusHistory: {
1342
- label: {
1343
- name: string;
1344
- color: string | null;
2356
+ linkedActivities: {
2357
+ id: string;
2358
+ type: "pr" | "mr";
2359
+ title: string;
2360
+ url: string;
2361
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
2362
+ isDraft: boolean;
2363
+ isMerged: boolean;
2364
+ hasConflicts: boolean;
2365
+ awaitingReview: boolean;
2366
+ author: string | null;
2367
+ authorResolved?: {
2368
+ id: string;
2369
+ login: string;
2370
+ name: string | null;
2371
+ email: string | null;
2372
+ } | null;
2373
+ updatedAt: string;
2374
+ mergedAt: string | null;
2375
+ reviewRequestedAt: string | null;
2376
+ volume: {
2377
+ additions: string | number;
2378
+ deletions: string | number;
2379
+ changedFiles: string | number;
2380
+ commits: string | number;
2381
+ } | null;
2382
+ statusHistory: {
2383
+ label: {
2384
+ name: string;
2385
+ color: string | null;
2386
+ };
2387
+ action: "added" | "removed";
2388
+ changedAt: string;
2389
+ changedBy: string | null;
2390
+ }[];
2391
+ reviews: {
2392
+ approvedCount: string | number;
2393
+ changesRequestedCount: string | number;
2394
+ commentedCount: string | number;
2395
+ dismissedCount: string | number;
2396
+ entries: {
2397
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
2398
+ reviewer: string;
2399
+ reviewerResolved?: {
2400
+ id: string;
2401
+ login: string;
2402
+ name: string | null;
2403
+ email: string | null;
2404
+ };
2405
+ submittedAt: string;
2406
+ url: string | null;
2407
+ }[];
1345
2408
  };
1346
- action: "added" | "removed";
1347
- changedAt: string;
1348
- changedBy: string | null;
1349
- }[];
1350
- reviews: {
1351
- approvedCount: string | number;
1352
- changesRequestedCount: string | number;
1353
- commentedCount: string | number;
1354
- dismissedCount: string | number;
1355
- entries: {
1356
- state: "approved" | "changes_requested" | "commented" | "dismissed";
1357
- reviewer: string;
1358
- reviewerResolved?: {
2409
+ unresolvedThreads: {
2410
+ count: string | number;
2411
+ digest: {
1359
2412
  id: string;
1360
- login: string;
1361
- name: string | null;
1362
- email: string | null;
2413
+ firstNoteAuthor: string | null;
2414
+ firstNoteBody: string;
2415
+ firstNoteCreatedAt: string;
2416
+ url: string | null;
2417
+ }[];
2418
+ } | null;
2419
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2420
+ linkSource?: {
2421
+ hintSource: string;
2422
+ kind: string;
2423
+ };
2424
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
2425
+ linkKind?: string;
2426
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
2427
+ confidence?: number | null;
2428
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
2429
+ status?: string;
2430
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
2431
+ attributable?: boolean;
2432
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
2433
+ resolves?: boolean;
2434
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
2435
+ evidence?: {
2436
+ field: string;
2437
+ text: string;
2438
+ matchStart: string | number;
2439
+ matchEnd: string | number;
2440
+ } | null;
2441
+ }[];
2442
+ evidence: {
2443
+ deliveryTransitions: {
2444
+ label: {
2445
+ name: string;
2446
+ color: string | null;
1363
2447
  };
1364
- submittedAt: string;
1365
- url: string | null;
1366
- }[];
1367
- };
1368
- unresolvedThreads: {
1369
- count: string | number;
1370
- digest: {
1371
- id: string;
1372
- firstNoteAuthor: string | null;
1373
- firstNoteBody: string;
1374
- firstNoteCreatedAt: string;
1375
- url: string | null;
1376
- }[];
1377
- } | null;
1378
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1379
- linkSource?: {
1380
- hintSource: string;
1381
- kind: string;
1382
- };
1383
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1384
- linkKind?: string;
1385
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1386
- confidence?: number | null;
1387
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1388
- status?: string;
1389
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1390
- attributable?: boolean;
1391
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1392
- resolves?: boolean;
1393
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1394
- evidence?: {
1395
- field: string;
1396
- text: string;
1397
- matchStart: string | number;
1398
- matchEnd: string | number;
1399
- } | null;
1400
- }[];
1401
- statusHistory: {
1402
- label: {
1403
- name: string;
1404
- color: string | null;
2448
+ action: "added" | "removed";
2449
+ changedAt: string;
2450
+ changedBy: string | null;
2451
+ }[];
2452
+ consideredCommits: {
2453
+ id: string;
2454
+ author: string | null;
2455
+ occurredAt: string;
2456
+ parentActivityId: string | null;
2457
+ }[];
2458
+ consideredPRs: {
2459
+ id: string;
2460
+ author: string | null;
2461
+ mergedAt: string | null;
2462
+ attributable: boolean;
2463
+ }[];
1405
2464
  };
1406
- action: "added" | "removed";
1407
- changedAt: string;
1408
- changedBy: string | null;
1409
- }[];
1410
- comments?: {
1411
- id: string;
1412
- source: "github" | "gitlab";
1413
- author: string | null;
1414
- createdAt: string;
1415
- body: string;
1416
- url: string | null;
1417
- parentType: "issue" | "pr" | "mr";
1418
- parentNumber: string | number;
1419
2465
  }[];
1420
2466
  };
1421
2467
  "text/plain": {
1422
- id: string;
1423
- source: "github" | "gitlab";
1424
- projectKey: string;
1425
- number: string | number;
1426
- title: string;
1427
- body: string | null;
1428
- url: string;
1429
- state: "open" | "closed" | "unknown";
1430
- author: string | null;
1431
- createdAt: string;
1432
- updatedAt: string;
1433
- iteration: {
1434
- id: string | number;
1435
- title: string;
1436
- startDate: string | null;
1437
- dueDate: string | null;
1438
- state: "upcoming" | "current" | "closed" | "unknown";
1439
- } | null;
1440
- milestone: string | null;
1441
- assignees: string[];
1442
- assigneesResolved?: {
1443
- id: string;
1444
- login: string;
1445
- name: string | null;
1446
- email: string | null;
1447
- }[];
1448
- labels: {
1449
- name: string;
1450
- color: string | null;
1451
- }[];
1452
- linkedActivities: {
1453
- id: string;
1454
- type: "pr" | "mr";
2468
+ issues: {
2469
+ source: "github" | "gitlab";
2470
+ projectKey: string;
2471
+ number: string | number;
1455
2472
  title: string;
1456
2473
  url: string;
1457
- state: "open" | "closed" | "merged" | "draft" | "unknown";
1458
- isDraft: boolean;
1459
- isMerged: boolean;
1460
- hasConflicts: boolean;
1461
- awaitingReview: boolean;
1462
- author: string | null;
1463
- authorResolved?: {
1464
- id: string;
1465
- login: string;
1466
- name: string | null;
1467
- email: string | null;
1468
- } | null;
1469
- updatedAt: string;
1470
- mergedAt: string | null;
1471
- reviewRequestedAt: string | null;
1472
- volume: {
1473
- additions: string | number;
1474
- deletions: string | number;
1475
- changedFiles: string | number;
1476
- commits: string | number;
2474
+ deliveryState: "delivered" | "in_progress" | "not_delivered";
2475
+ deliveredAt: string | null;
2476
+ deliveryLabel: string | null;
2477
+ attribution: {
2478
+ isAssignee: boolean;
2479
+ hasOwnCommit: boolean;
2480
+ isMergedPRAuthor: boolean;
2481
+ result: "assigned" | "committer" | "pr_author" | "none";
1477
2482
  } | null;
1478
- statusHistory: {
1479
- label: {
1480
- name: string;
1481
- color: string | null;
2483
+ linkedActivities: {
2484
+ id: string;
2485
+ type: "pr" | "mr";
2486
+ title: string;
2487
+ url: string;
2488
+ state: "open" | "closed" | "merged" | "draft" | "unknown";
2489
+ isDraft: boolean;
2490
+ isMerged: boolean;
2491
+ hasConflicts: boolean;
2492
+ awaitingReview: boolean;
2493
+ author: string | null;
2494
+ authorResolved?: {
2495
+ id: string;
2496
+ login: string;
2497
+ name: string | null;
2498
+ email: string | null;
2499
+ } | null;
2500
+ updatedAt: string;
2501
+ mergedAt: string | null;
2502
+ reviewRequestedAt: string | null;
2503
+ volume: {
2504
+ additions: string | number;
2505
+ deletions: string | number;
2506
+ changedFiles: string | number;
2507
+ commits: string | number;
2508
+ } | null;
2509
+ statusHistory: {
2510
+ label: {
2511
+ name: string;
2512
+ color: string | null;
2513
+ };
2514
+ action: "added" | "removed";
2515
+ changedAt: string;
2516
+ changedBy: string | null;
2517
+ }[];
2518
+ reviews: {
2519
+ approvedCount: string | number;
2520
+ changesRequestedCount: string | number;
2521
+ commentedCount: string | number;
2522
+ dismissedCount: string | number;
2523
+ entries: {
2524
+ state: "approved" | "changes_requested" | "commented" | "dismissed";
2525
+ reviewer: string;
2526
+ reviewerResolved?: {
2527
+ id: string;
2528
+ login: string;
2529
+ name: string | null;
2530
+ email: string | null;
2531
+ };
2532
+ submittedAt: string;
2533
+ url: string | null;
2534
+ }[];
1482
2535
  };
1483
- action: "added" | "removed";
1484
- changedAt: string;
1485
- changedBy: string | null;
1486
- }[];
1487
- reviews: {
1488
- approvedCount: string | number;
1489
- changesRequestedCount: string | number;
1490
- commentedCount: string | number;
1491
- dismissedCount: string | number;
1492
- entries: {
1493
- state: "approved" | "changes_requested" | "commented" | "dismissed";
1494
- reviewer: string;
1495
- reviewerResolved?: {
2536
+ unresolvedThreads: {
2537
+ count: string | number;
2538
+ digest: {
1496
2539
  id: string;
1497
- login: string;
1498
- name: string | null;
1499
- email: string | null;
2540
+ firstNoteAuthor: string | null;
2541
+ firstNoteBody: string;
2542
+ firstNoteCreatedAt: string;
2543
+ url: string | null;
2544
+ }[];
2545
+ } | null;
2546
+ reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2547
+ linkSource?: {
2548
+ hintSource: string;
2549
+ kind: string;
2550
+ };
2551
+ /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
2552
+ linkKind?: string;
2553
+ /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
2554
+ confidence?: number | null;
2555
+ /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
2556
+ status?: string;
2557
+ /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
2558
+ attributable?: boolean;
2559
+ /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
2560
+ resolves?: boolean;
2561
+ /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
2562
+ evidence?: {
2563
+ field: string;
2564
+ text: string;
2565
+ matchStart: string | number;
2566
+ matchEnd: string | number;
2567
+ } | null;
2568
+ }[];
2569
+ evidence: {
2570
+ deliveryTransitions: {
2571
+ label: {
2572
+ name: string;
2573
+ color: string | null;
1500
2574
  };
1501
- submittedAt: string;
1502
- url: string | null;
2575
+ action: "added" | "removed";
2576
+ changedAt: string;
2577
+ changedBy: string | null;
1503
2578
  }[];
1504
- };
1505
- unresolvedThreads: {
1506
- count: string | number;
1507
- digest: {
2579
+ consideredCommits: {
1508
2580
  id: string;
1509
- firstNoteAuthor: string | null;
1510
- firstNoteBody: string;
1511
- firstNoteCreatedAt: string;
1512
- url: string | null;
2581
+ author: string | null;
2582
+ occurredAt: string;
2583
+ parentActivityId: string | null;
1513
2584
  }[];
1514
- } | null;
1515
- reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1516
- linkSource?: {
1517
- hintSource: string;
1518
- kind: string;
1519
- };
1520
- /** @description Raw link classification: 'reference' (mention), 'resolution' (closes the issue), or 'reverse_comment' (link discovered from the issue's comments pointing back at this PR/MR). */
1521
- linkKind?: string;
1522
- /** @description Deterministic correlation confidence in [0,1]. Driven by the form of the evidence (canonical URL > cross-ref > bare short ref), with a title penalty and a resolution bonus. Ambiguous heuristic-resolved refs are capped at 0.60. */
1523
- confidence?: number | null;
1524
- /** @description 'confirmed' when confidence >= 0.75 and the link is unambiguous (or confirmed via bidirectional evidence); otherwise 'candidate'. Only 'confirmed' links are attributable. */
1525
- status?: string;
1526
- /** @description True when the linked PR/MR CONTRIBUTED to the issue (status === 'confirmed', any linkKind incl. references and reverse links). This is the flag to use for imputation/billing — preparatory work counts. */
1527
- attributable?: boolean;
1528
- /** @description True when the linked PR/MR actually CLOSES the issue (status === 'confirmed' && linkKind === 'resolution'). Use for issue status, NOT for billing. */
1529
- resolves?: boolean;
1530
- /** @description Audit trail: the matched snippet, the field it was found in, and the offsets — so a human can verify why the link was classified this way. */
1531
- evidence?: {
1532
- field: string;
1533
- text: string;
1534
- matchStart: string | number;
1535
- matchEnd: string | number;
1536
- } | null;
1537
- }[];
1538
- statusHistory: {
1539
- label: {
1540
- name: string;
1541
- color: string | null;
1542
- };
1543
- action: "added" | "removed";
1544
- changedAt: string;
1545
- changedBy: string | null;
1546
- }[];
1547
- comments?: {
1548
- id: string;
1549
- source: "github" | "gitlab";
1550
- author: string | null;
1551
- createdAt: string;
1552
- body: string;
1553
- url: string | null;
1554
- parentType: "issue" | "pr" | "mr";
1555
- parentNumber: string | number;
1556
- }[];
1557
- };
1558
- };
1559
- };
1560
- 400: {
1561
- headers: {
1562
- [name: string]: unknown;
1563
- };
1564
- content: {
1565
- "application/json": {
1566
- error: string;
1567
- };
1568
- "multipart/form-data": {
1569
- error: string;
1570
- };
1571
- "text/plain": {
1572
- error: string;
2585
+ consideredPRs: {
2586
+ id: string;
2587
+ author: string | null;
2588
+ mergedAt: string | null;
2589
+ attributable: boolean;
2590
+ }[];
2591
+ };
2592
+ }[];
1573
2593
  };
1574
2594
  };
1575
2595
  };
1576
- 404: {
2596
+ 400: {
1577
2597
  headers: {
1578
2598
  [name: string]: unknown;
1579
2599
  };
@@ -1591,13 +2611,14 @@ export interface operations {
1591
2611
  };
1592
2612
  };
1593
2613
  };
1594
- getV1Iterations: {
2614
+ "getV1ProjectsBySourceByProjectKeyDelivery-rules": {
1595
2615
  parameters: {
1596
- query?: {
1597
- state?: string;
1598
- };
2616
+ query?: never;
1599
2617
  header?: never;
1600
- path?: never;
2618
+ path: {
2619
+ source: string;
2620
+ projectKey: string;
2621
+ };
1601
2622
  cookie?: never;
1602
2623
  };
1603
2624
  requestBody?: never;
@@ -1608,189 +2629,56 @@ export interface operations {
1608
2629
  };
1609
2630
  content: {
1610
2631
  "application/json": {
1611
- id: string | number;
1612
- title: string;
1613
- startDate: string | null;
1614
- dueDate: string | null;
1615
- state: "upcoming" | "current" | "closed" | "unknown";
1616
- workItemCount: string | number;
1617
- }[];
2632
+ source: "github" | "gitlab";
2633
+ projectKey: string;
2634
+ deliveryLabels: string[];
2635
+ openedLabels: string[];
2636
+ updatedAt: string | null;
2637
+ };
1618
2638
  "multipart/form-data": {
1619
- id: string | number;
1620
- title: string;
1621
- startDate: string | null;
1622
- dueDate: string | null;
1623
- state: "upcoming" | "current" | "closed" | "unknown";
1624
- workItemCount: string | number;
1625
- }[];
2639
+ source: "github" | "gitlab";
2640
+ projectKey: string;
2641
+ deliveryLabels: string[];
2642
+ openedLabels: string[];
2643
+ updatedAt: string | null;
2644
+ };
1626
2645
  "text/plain": {
1627
- id: string | number;
1628
- title: string;
1629
- startDate: string | null;
1630
- dueDate: string | null;
1631
- state: "upcoming" | "current" | "closed" | "unknown";
1632
- workItemCount: string | number;
1633
- }[];
2646
+ source: "github" | "gitlab";
2647
+ projectKey: string;
2648
+ deliveryLabels: string[];
2649
+ openedLabels: string[];
2650
+ updatedAt: string | null;
2651
+ };
1634
2652
  };
1635
2653
  };
1636
2654
  };
1637
2655
  };
1638
- getV1Events: {
2656
+ "patchV1ProjectsBySourceByProjectKeyDelivery-rules": {
1639
2657
  parameters: {
1640
- query?: {
1641
- /** @description Inclusive lower bound, YYYY-MM-DD (Paris-TZ day). Required. */
1642
- from?: string;
1643
- /** @description Inclusive upper bound, YYYY-MM-DD (Paris-TZ day). Required. */
1644
- to?: string;
1645
- /** @description Filter by author (case-insensitive). */
1646
- user?: string;
1647
- repo?: string;
1648
- /** @description CSV: commit,comment,review,state-transition */
1649
- type?: string;
1650
- /** @description github | gitlab */
1651
- provider?: string;
1652
- /** @description Default 500, max 1000. */
1653
- limit?: string;
1654
- /** @description Opaque cursor from previous nextCursor. */
1655
- cursor?: string;
1656
- /** @description ISO datetime; returns only events with occurredAt > since. Combines with from/to. */
1657
- since?: string;
1658
- };
2658
+ query?: never;
1659
2659
  header?: never;
1660
- path?: never;
2660
+ path: {
2661
+ source: string;
2662
+ projectKey: string;
2663
+ };
1661
2664
  cookie?: never;
1662
2665
  };
1663
- requestBody?: never;
1664
- responses: {
1665
- 200: {
1666
- headers: {
1667
- [name: string]: unknown;
1668
- };
1669
- content: {
1670
- "application/json": {
1671
- events: {
1672
- id: string;
1673
- source: "github" | "gitlab";
1674
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
1675
- repo: string;
1676
- externalId: string;
1677
- day: string;
1678
- occurredAt: string;
1679
- author: string | null;
1680
- title: string;
1681
- url: string | null;
1682
- state: string | null;
1683
- parentActivityId: string | null;
1684
- meta: {
1685
- [key: string]: unknown;
1686
- } | null;
1687
- authorResolved?: {
1688
- login: string | null;
1689
- name: string | null;
1690
- email: string | null;
1691
- };
1692
- }[];
1693
- total: string | number;
1694
- nextCursor: string | null;
1695
- };
1696
- "multipart/form-data": {
1697
- events: {
1698
- id: string;
1699
- source: "github" | "gitlab";
1700
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
1701
- repo: string;
1702
- externalId: string;
1703
- day: string;
1704
- occurredAt: string;
1705
- author: string | null;
1706
- title: string;
1707
- url: string | null;
1708
- state: string | null;
1709
- parentActivityId: string | null;
1710
- meta: {
1711
- [key: string]: unknown;
1712
- } | null;
1713
- authorResolved?: {
1714
- login: string | null;
1715
- name: string | null;
1716
- email: string | null;
1717
- };
1718
- }[];
1719
- total: string | number;
1720
- nextCursor: string | null;
1721
- };
1722
- "text/plain": {
1723
- events: {
1724
- id: string;
1725
- source: "github" | "gitlab";
1726
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
1727
- repo: string;
1728
- externalId: string;
1729
- day: string;
1730
- occurredAt: string;
1731
- author: string | null;
1732
- title: string;
1733
- url: string | null;
1734
- state: string | null;
1735
- parentActivityId: string | null;
1736
- meta: {
1737
- [key: string]: unknown;
1738
- } | null;
1739
- authorResolved?: {
1740
- login: string | null;
1741
- name: string | null;
1742
- email: string | null;
1743
- };
1744
- }[];
1745
- total: string | number;
1746
- nextCursor: string | null;
1747
- };
2666
+ requestBody: {
2667
+ content: {
2668
+ "application/json": {
2669
+ deliveryLabels?: string[];
2670
+ openedLabels?: string[];
1748
2671
  };
1749
- };
1750
- 400: {
1751
- headers: {
1752
- [name: string]: unknown;
2672
+ "multipart/form-data": {
2673
+ deliveryLabels?: string[];
2674
+ openedLabels?: string[];
1753
2675
  };
1754
- content: {
1755
- "application/json": {
1756
- error: string;
1757
- };
1758
- "multipart/form-data": {
1759
- error: string;
1760
- };
1761
- "text/plain": {
1762
- error: string;
1763
- };
2676
+ "text/plain": {
2677
+ deliveryLabels?: string[];
2678
+ openedLabels?: string[];
1764
2679
  };
1765
2680
  };
1766
2681
  };
1767
- };
1768
- getV1Activities: {
1769
- parameters: {
1770
- query?: {
1771
- /** @description Exact match (case-insensitive) on the activity author's GitHub/GitLab login. Does NOT match display names. */
1772
- author?: string;
1773
- /** @description CSV: open,draft,merged,closed,unknown. Default returns all states. */
1774
- state?: string;
1775
- /** @description CSV: pr,mr,issue. Default returns all. */
1776
- type?: string;
1777
- repo?: string;
1778
- /** @description github | gitlab */
1779
- provider?: string;
1780
- /** @description ISO datetime; activity.updatedAt >= since. */
1781
- updatedSince?: string;
1782
- /** @description ISO datetime; activity.updatedAt < before. */
1783
- updatedBefore?: string;
1784
- /** @description Default 100, max 500. */
1785
- limit?: string;
1786
- /** @description Default 0. */
1787
- offset?: string;
1788
- };
1789
- header?: never;
1790
- path?: never;
1791
- cookie?: never;
1792
- };
1793
- requestBody?: never;
1794
2682
  responses: {
1795
2683
  200: {
1796
2684
  headers: {
@@ -1798,64 +2686,25 @@ export interface operations {
1798
2686
  };
1799
2687
  content: {
1800
2688
  "application/json": {
1801
- items: {
1802
- id: string;
1803
- source: "github" | "gitlab";
1804
- repo: string;
1805
- type: "pr" | "mr" | "issue";
1806
- number: string | number;
1807
- title: string;
1808
- body: string | null;
1809
- url: string;
1810
- state: "open" | "draft" | "merged" | "closed" | "unknown";
1811
- author: string | null;
1812
- createdAt: string;
1813
- updatedAt: string;
1814
- mergedAt: string | null;
1815
- }[];
1816
- total: string | number;
1817
- limit: string | number;
1818
- offset: string | number;
2689
+ source: "github" | "gitlab";
2690
+ projectKey: string;
2691
+ deliveryLabels: string[];
2692
+ openedLabels: string[];
2693
+ updatedAt: string | null;
1819
2694
  };
1820
2695
  "multipart/form-data": {
1821
- items: {
1822
- id: string;
1823
- source: "github" | "gitlab";
1824
- repo: string;
1825
- type: "pr" | "mr" | "issue";
1826
- number: string | number;
1827
- title: string;
1828
- body: string | null;
1829
- url: string;
1830
- state: "open" | "draft" | "merged" | "closed" | "unknown";
1831
- author: string | null;
1832
- createdAt: string;
1833
- updatedAt: string;
1834
- mergedAt: string | null;
1835
- }[];
1836
- total: string | number;
1837
- limit: string | number;
1838
- offset: string | number;
2696
+ source: "github" | "gitlab";
2697
+ projectKey: string;
2698
+ deliveryLabels: string[];
2699
+ openedLabels: string[];
2700
+ updatedAt: string | null;
1839
2701
  };
1840
2702
  "text/plain": {
1841
- items: {
1842
- id: string;
1843
- source: "github" | "gitlab";
1844
- repo: string;
1845
- type: "pr" | "mr" | "issue";
1846
- number: string | number;
1847
- title: string;
1848
- body: string | null;
1849
- url: string;
1850
- state: "open" | "draft" | "merged" | "closed" | "unknown";
1851
- author: string | null;
1852
- createdAt: string;
1853
- updatedAt: string;
1854
- mergedAt: string | null;
1855
- }[];
1856
- total: string | number;
1857
- limit: string | number;
1858
- offset: string | number;
2703
+ source: "github" | "gitlab";
2704
+ projectKey: string;
2705
+ deliveryLabels: string[];
2706
+ openedLabels: string[];
2707
+ updatedAt: string | null;
1859
2708
  };
1860
2709
  };
1861
2710
  };