@cesar-richard/git-connector-sdk 1.61.0 → 1.63.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.
- package/README.md +72 -1
- package/dist/schema.d.ts +2114 -1265
- 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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
217
|
-
|
|
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
|
-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
url: string | null;
|
|
199
|
+
author: string | null;
|
|
200
|
+
mergedAt: string | null;
|
|
201
|
+
attributable: boolean;
|
|
364
202
|
}[];
|
|
365
203
|
};
|
|
366
|
-
|
|
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
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
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
|
-
|
|
510
|
-
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
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
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
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
|
-
|
|
649
|
-
offset?: string | number;
|
|
494
|
+
nextCursor: string | null;
|
|
650
495
|
};
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
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
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
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
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
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
|
-
|
|
797
|
-
|
|
798
|
-
|
|
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
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
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
|
-
|
|
836
|
-
offset?: string | number;
|
|
2018
|
+
nextCursor: string | null;
|
|
837
2019
|
};
|
|
838
2020
|
"multipart/form-data": {
|
|
839
|
-
|
|
2021
|
+
events: {
|
|
840
2022
|
id: string;
|
|
841
2023
|
source: "github" | "gitlab";
|
|
842
|
-
|
|
843
|
-
|
|
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
|
-
|
|
846
|
-
|
|
847
|
-
|
|
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
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
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
|
-
|
|
859
|
-
|
|
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
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
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
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
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
|
-
|
|
1228
|
-
|
|
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
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
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
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
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
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
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
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
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
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
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
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
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
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
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
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
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
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
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
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
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
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
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
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
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
|
-
|
|
1502
|
-
|
|
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
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
url: string | null;
|
|
2581
|
+
author: string | null;
|
|
2582
|
+
occurredAt: string;
|
|
2583
|
+
parentActivityId: string | null;
|
|
1513
2584
|
}[];
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2614
|
+
"getV1ProjectsBySourceByProjectKeyDelivery-rules": {
|
|
1595
2615
|
parameters: {
|
|
1596
|
-
query?:
|
|
1597
|
-
state?: string;
|
|
1598
|
-
};
|
|
2616
|
+
query?: never;
|
|
1599
2617
|
header?: never;
|
|
1600
|
-
path
|
|
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
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
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
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
}[];
|
|
2639
|
+
source: "github" | "gitlab";
|
|
2640
|
+
projectKey: string;
|
|
2641
|
+
deliveryLabels: string[];
|
|
2642
|
+
openedLabels: string[];
|
|
2643
|
+
updatedAt: string | null;
|
|
2644
|
+
};
|
|
1626
2645
|
"text/plain": {
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
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
|
-
|
|
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
|
|
2660
|
+
path: {
|
|
2661
|
+
source: string;
|
|
2662
|
+
projectKey: string;
|
|
2663
|
+
};
|
|
1661
2664
|
cookie?: never;
|
|
1662
2665
|
};
|
|
1663
|
-
requestBody
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
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
|
-
|
|
1751
|
-
|
|
1752
|
-
[name: string]: unknown;
|
|
2672
|
+
"multipart/form-data": {
|
|
2673
|
+
deliveryLabels?: string[];
|
|
2674
|
+
openedLabels?: string[];
|
|
1753
2675
|
};
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
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
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
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
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
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
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
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
|
};
|