@cesar-richard/git-connector-sdk 4.4.0 → 4.6.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 +33 -0
- package/dist/schema.d.ts +918 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -81,6 +81,39 @@ Tokens with the `gck_` prefix are immutable once minted; revoke and reissue via
|
|
|
81
81
|
|
|
82
82
|
The `/v1/*` surface is designed to power activity reports (CRA, billable-time sheets, "what did I do this month"). The primitives below let you slice your data per-user, per-day, per-type.
|
|
83
83
|
|
|
84
|
+
### Issues, tasks, incidents: you filter, we don't
|
|
85
|
+
|
|
86
|
+
git-connector collects and labels; **it does not decide what belongs in your report**. GitLab tasks, incidents and test cases come back from the same project endpoint as ordinary issues, so they are all ingested and all returned. If your CRA should only count real issues, filter on your side:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
const { data } = await client.GET("/v1/work-items", {
|
|
90
|
+
params: { query: { from, to } },
|
|
91
|
+
});
|
|
92
|
+
const issuesOnly = data.items.filter((w) => w.issueType === "issue");
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Two fields carry the kind, on `/v1/work-items`, `/v1/activities` and `/v1/deliverables`:
|
|
96
|
+
|
|
97
|
+
- **`issueType`** — normalised: `issue`, `task`, `incident`, `test_case`, or `other`. It is `null` on a PR/MR, which is not an issue-like item.
|
|
98
|
+
- **`originalType`** — the provider's own word, unmapped: `"task"` on GitLab, `"Feature"` on a GitHub org that defined it. `null` when the provider said nothing.
|
|
99
|
+
|
|
100
|
+
`other` is **not** a parse failure: it means the provider named a kind outside the normalised vocabulary. Read `originalType` then. This matters most on GitHub, whose issue types are defined per organisation — one org's `Epic` or `Spike` cannot be mapped onto a cross-provider taxonomy without inventing one, so it is deliberately left native. Branch on `source` if you need the raw values.
|
|
101
|
+
|
|
102
|
+
### Closure, hierarchy, time tracking
|
|
103
|
+
|
|
104
|
+
The same three shapes carry what the providers say about an item beyond its labels. Everything is nullable, and **null means the provider said nothing — never zero, never "no"**.
|
|
105
|
+
|
|
106
|
+
- **`closedAt` / `closedBy`** — when, and by whom. Distinct from `mergedAt`: a PR/MR can be closed without merging, and an issue is never merged. `closedBy` is a login, joinable against `?author`.
|
|
107
|
+
- **`stateReason`** (GitHub) — `completed`, `not_planned` or `reopened`. **`not_planned` means the issue was closed without being done.** A delivery report that ignores it counts abandoned work as delivered. GitLab has no equivalent, so it is always null there.
|
|
108
|
+
- **`parentEpic`** (GitLab) — `{ id, iid, title, url }`, read from the issue's own payload. Epics themselves are *not* ingested (they live at group level), but this is enough to walk PR → issue → epic.
|
|
109
|
+
- **`parentIssueUrl` / `subIssues`** (GitHub) — the same hierarchy on the other provider, plus sub-issue progress.
|
|
110
|
+
- **`blockingCount` / `blockedByCount`** — two directions, reported separately on purpose: GitLab only counts what an issue *blocks*, so `blockedByCount` is null there. Do not read one as the inverse of the other.
|
|
111
|
+
- **`timeStats`** (GitLab) — `{ estimateSeconds, spentSeconds }`, straight from the project's time tracking.
|
|
112
|
+
- **`taskCompletion`** — checklist progress in the description.
|
|
113
|
+
- **`weight`, `dueDate`, `startDate`, `healthStatus`, `severity`** (GitLab) — planning metadata, verbatim. No scale is imposed; `severity` is meaningful when `issueType === "incident"`.
|
|
114
|
+
|
|
115
|
+
On PR/MR shapes (`/v1/activities` and `linkedActivities[]`): **`mergedBy`** and **`targetBranch`**. `mergedBy` is GitLab-only — GitHub's list payload omits it, so null there means unknown.
|
|
116
|
+
|
|
84
117
|
### What did I do today?
|
|
85
118
|
|
|
86
119
|
```ts
|
package/dist/schema.d.ts
CHANGED
|
@@ -238,6 +238,56 @@ export interface components {
|
|
|
238
238
|
source: "github" | "gitlab";
|
|
239
239
|
repo: string;
|
|
240
240
|
type: "pr" | "mr" | "issue";
|
|
241
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
242
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
243
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
244
|
+
originalType: string | null;
|
|
245
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
246
|
+
closedAt: string | null;
|
|
247
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
248
|
+
closedBy: string | null;
|
|
249
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
250
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
251
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
252
|
+
parentEpic: {
|
|
253
|
+
id: (string | number) | null;
|
|
254
|
+
iid: (string | number) | null;
|
|
255
|
+
title: string | null;
|
|
256
|
+
url: string | null;
|
|
257
|
+
} | null;
|
|
258
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
259
|
+
parentIssueUrl: string | null;
|
|
260
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
261
|
+
subIssues: {
|
|
262
|
+
total: string | number;
|
|
263
|
+
completed: string | number;
|
|
264
|
+
} | null;
|
|
265
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
266
|
+
blockingCount: (string | number) | null;
|
|
267
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
268
|
+
blockedByCount: (string | number) | null;
|
|
269
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
270
|
+
timeStats: {
|
|
271
|
+
estimateSeconds: string | number;
|
|
272
|
+
spentSeconds: string | number;
|
|
273
|
+
} | null;
|
|
274
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
275
|
+
taskCompletion: {
|
|
276
|
+
total: string | number;
|
|
277
|
+
completed: string | number;
|
|
278
|
+
} | null;
|
|
279
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
280
|
+
weight: (string | number) | null;
|
|
281
|
+
dueDate: string | null;
|
|
282
|
+
startDate: string | null;
|
|
283
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
284
|
+
healthStatus: string | null;
|
|
285
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
286
|
+
severity: string | null;
|
|
287
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
288
|
+
mergedBy: string | null;
|
|
289
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
290
|
+
targetBranch: string | null;
|
|
241
291
|
number: string | number;
|
|
242
292
|
title: string;
|
|
243
293
|
body: string | null;
|
|
@@ -293,6 +343,56 @@ export interface components {
|
|
|
293
343
|
source: "github" | "gitlab";
|
|
294
344
|
repo: string;
|
|
295
345
|
type: "pr" | "mr" | "issue";
|
|
346
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
347
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
348
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
349
|
+
originalType: string | null;
|
|
350
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
351
|
+
closedAt: string | null;
|
|
352
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
353
|
+
closedBy: string | null;
|
|
354
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
355
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
356
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
357
|
+
parentEpic: {
|
|
358
|
+
id: (string | number) | null;
|
|
359
|
+
iid: (string | number) | null;
|
|
360
|
+
title: string | null;
|
|
361
|
+
url: string | null;
|
|
362
|
+
} | null;
|
|
363
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
364
|
+
parentIssueUrl: string | null;
|
|
365
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
366
|
+
subIssues: {
|
|
367
|
+
total: string | number;
|
|
368
|
+
completed: string | number;
|
|
369
|
+
} | null;
|
|
370
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
371
|
+
blockingCount: (string | number) | null;
|
|
372
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
373
|
+
blockedByCount: (string | number) | null;
|
|
374
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
375
|
+
timeStats: {
|
|
376
|
+
estimateSeconds: string | number;
|
|
377
|
+
spentSeconds: string | number;
|
|
378
|
+
} | null;
|
|
379
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
380
|
+
taskCompletion: {
|
|
381
|
+
total: string | number;
|
|
382
|
+
completed: string | number;
|
|
383
|
+
} | null;
|
|
384
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
385
|
+
weight: (string | number) | null;
|
|
386
|
+
dueDate: string | null;
|
|
387
|
+
startDate: string | null;
|
|
388
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
389
|
+
healthStatus: string | null;
|
|
390
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
391
|
+
severity: string | null;
|
|
392
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
393
|
+
mergedBy: string | null;
|
|
394
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
395
|
+
targetBranch: string | null;
|
|
296
396
|
number: string | number;
|
|
297
397
|
title: string;
|
|
298
398
|
body: string | null;
|
|
@@ -513,6 +613,10 @@ export interface components {
|
|
|
513
613
|
}[];
|
|
514
614
|
updatedAt: string;
|
|
515
615
|
mergedAt: string | null;
|
|
616
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
617
|
+
mergedBy: string | null;
|
|
618
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
619
|
+
targetBranch: string | null;
|
|
516
620
|
reviewRequestedAt: string | null;
|
|
517
621
|
volume: {
|
|
518
622
|
additions: string | number;
|
|
@@ -631,6 +735,52 @@ export interface components {
|
|
|
631
735
|
author: string | null;
|
|
632
736
|
createdAt: string;
|
|
633
737
|
updatedAt: string;
|
|
738
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
739
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
740
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
741
|
+
originalType: string | null;
|
|
742
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
743
|
+
closedAt: string | null;
|
|
744
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
745
|
+
closedBy: string | null;
|
|
746
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
747
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
748
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
749
|
+
parentEpic: {
|
|
750
|
+
id: (string | number) | null;
|
|
751
|
+
iid: (string | number) | null;
|
|
752
|
+
title: string | null;
|
|
753
|
+
url: string | null;
|
|
754
|
+
} | null;
|
|
755
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
756
|
+
parentIssueUrl: string | null;
|
|
757
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
758
|
+
subIssues: {
|
|
759
|
+
total: string | number;
|
|
760
|
+
completed: string | number;
|
|
761
|
+
} | null;
|
|
762
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
763
|
+
blockingCount: (string | number) | null;
|
|
764
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
765
|
+
blockedByCount: (string | number) | null;
|
|
766
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
767
|
+
timeStats: {
|
|
768
|
+
estimateSeconds: string | number;
|
|
769
|
+
spentSeconds: string | number;
|
|
770
|
+
} | null;
|
|
771
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
772
|
+
taskCompletion: {
|
|
773
|
+
total: string | number;
|
|
774
|
+
completed: string | number;
|
|
775
|
+
} | null;
|
|
776
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
777
|
+
weight: (string | number) | null;
|
|
778
|
+
dueDate: string | null;
|
|
779
|
+
startDate: string | null;
|
|
780
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
781
|
+
healthStatus: string | null;
|
|
782
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
783
|
+
severity: string | null;
|
|
634
784
|
iteration: {
|
|
635
785
|
id: string | number;
|
|
636
786
|
title: string;
|
|
@@ -734,6 +884,10 @@ export interface components {
|
|
|
734
884
|
}[];
|
|
735
885
|
updatedAt: string;
|
|
736
886
|
mergedAt: string | null;
|
|
887
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
888
|
+
mergedBy: string | null;
|
|
889
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
890
|
+
targetBranch: string | null;
|
|
737
891
|
reviewRequestedAt: string | null;
|
|
738
892
|
volume: {
|
|
739
893
|
additions: string | number;
|
|
@@ -852,6 +1006,52 @@ export interface components {
|
|
|
852
1006
|
author: string | null;
|
|
853
1007
|
createdAt: string;
|
|
854
1008
|
updatedAt: string;
|
|
1009
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
1010
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
1011
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
1012
|
+
originalType: string | null;
|
|
1013
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
1014
|
+
closedAt: string | null;
|
|
1015
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
1016
|
+
closedBy: string | null;
|
|
1017
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
1018
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
1019
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
1020
|
+
parentEpic: {
|
|
1021
|
+
id: (string | number) | null;
|
|
1022
|
+
iid: (string | number) | null;
|
|
1023
|
+
title: string | null;
|
|
1024
|
+
url: string | null;
|
|
1025
|
+
} | null;
|
|
1026
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
1027
|
+
parentIssueUrl: string | null;
|
|
1028
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
1029
|
+
subIssues: {
|
|
1030
|
+
total: string | number;
|
|
1031
|
+
completed: string | number;
|
|
1032
|
+
} | null;
|
|
1033
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
1034
|
+
blockingCount: (string | number) | null;
|
|
1035
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
1036
|
+
blockedByCount: (string | number) | null;
|
|
1037
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
1038
|
+
timeStats: {
|
|
1039
|
+
estimateSeconds: string | number;
|
|
1040
|
+
spentSeconds: string | number;
|
|
1041
|
+
} | null;
|
|
1042
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
1043
|
+
taskCompletion: {
|
|
1044
|
+
total: string | number;
|
|
1045
|
+
completed: string | number;
|
|
1046
|
+
} | null;
|
|
1047
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
1048
|
+
weight: (string | number) | null;
|
|
1049
|
+
dueDate: string | null;
|
|
1050
|
+
startDate: string | null;
|
|
1051
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
1052
|
+
healthStatus: string | null;
|
|
1053
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
1054
|
+
severity: string | null;
|
|
855
1055
|
iteration: {
|
|
856
1056
|
id: string | number;
|
|
857
1057
|
title: string;
|
|
@@ -1494,6 +1694,10 @@ export interface components {
|
|
|
1494
1694
|
}[];
|
|
1495
1695
|
updatedAt: string;
|
|
1496
1696
|
mergedAt: string | null;
|
|
1697
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
1698
|
+
mergedBy: string | null;
|
|
1699
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
1700
|
+
targetBranch: string | null;
|
|
1497
1701
|
reviewRequestedAt: string | null;
|
|
1498
1702
|
volume: {
|
|
1499
1703
|
additions: string | number;
|
|
@@ -1578,6 +1782,16 @@ export interface components {
|
|
|
1578
1782
|
number: string | number;
|
|
1579
1783
|
}[];
|
|
1580
1784
|
};
|
|
1785
|
+
ParentEpic: {
|
|
1786
|
+
id: (string | number) | null;
|
|
1787
|
+
iid: (string | number) | null;
|
|
1788
|
+
title: string | null;
|
|
1789
|
+
url: string | null;
|
|
1790
|
+
};
|
|
1791
|
+
Progress: {
|
|
1792
|
+
total: string | number;
|
|
1793
|
+
completed: string | number;
|
|
1794
|
+
};
|
|
1581
1795
|
ProjectLabel: {
|
|
1582
1796
|
name: string;
|
|
1583
1797
|
color: string;
|
|
@@ -1675,6 +1889,10 @@ export interface components {
|
|
|
1675
1889
|
firstNoteCreatedAt: string;
|
|
1676
1890
|
url: string | null;
|
|
1677
1891
|
};
|
|
1892
|
+
TimeStats: {
|
|
1893
|
+
estimateSeconds: string | number;
|
|
1894
|
+
spentSeconds: string | number;
|
|
1895
|
+
};
|
|
1678
1896
|
TrackedProject: {
|
|
1679
1897
|
source: "github" | "gitlab";
|
|
1680
1898
|
/** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
|
|
@@ -1714,6 +1932,52 @@ export interface components {
|
|
|
1714
1932
|
author: string | null;
|
|
1715
1933
|
createdAt: string;
|
|
1716
1934
|
updatedAt: string;
|
|
1935
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
1936
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
1937
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
1938
|
+
originalType: string | null;
|
|
1939
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
1940
|
+
closedAt: string | null;
|
|
1941
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
1942
|
+
closedBy: string | null;
|
|
1943
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
1944
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
1945
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
1946
|
+
parentEpic: {
|
|
1947
|
+
id: (string | number) | null;
|
|
1948
|
+
iid: (string | number) | null;
|
|
1949
|
+
title: string | null;
|
|
1950
|
+
url: string | null;
|
|
1951
|
+
} | null;
|
|
1952
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
1953
|
+
parentIssueUrl: string | null;
|
|
1954
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
1955
|
+
subIssues: {
|
|
1956
|
+
total: string | number;
|
|
1957
|
+
completed: string | number;
|
|
1958
|
+
} | null;
|
|
1959
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
1960
|
+
blockingCount: (string | number) | null;
|
|
1961
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
1962
|
+
blockedByCount: (string | number) | null;
|
|
1963
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
1964
|
+
timeStats: {
|
|
1965
|
+
estimateSeconds: string | number;
|
|
1966
|
+
spentSeconds: string | number;
|
|
1967
|
+
} | null;
|
|
1968
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
1969
|
+
taskCompletion: {
|
|
1970
|
+
total: string | number;
|
|
1971
|
+
completed: string | number;
|
|
1972
|
+
} | null;
|
|
1973
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
1974
|
+
weight: (string | number) | null;
|
|
1975
|
+
dueDate: string | null;
|
|
1976
|
+
startDate: string | null;
|
|
1977
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
1978
|
+
healthStatus: string | null;
|
|
1979
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
1980
|
+
severity: string | null;
|
|
1717
1981
|
iteration: {
|
|
1718
1982
|
id: string | number;
|
|
1719
1983
|
title: string;
|
|
@@ -1778,6 +2042,10 @@ export interface components {
|
|
|
1778
2042
|
}[];
|
|
1779
2043
|
updatedAt: string;
|
|
1780
2044
|
mergedAt: string | null;
|
|
2045
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
2046
|
+
mergedBy: string | null;
|
|
2047
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
2048
|
+
targetBranch: string | null;
|
|
1781
2049
|
reviewRequestedAt: string | null;
|
|
1782
2050
|
volume: {
|
|
1783
2051
|
additions: string | number;
|
|
@@ -1899,6 +2167,52 @@ export interface components {
|
|
|
1899
2167
|
author: string | null;
|
|
1900
2168
|
createdAt: string;
|
|
1901
2169
|
updatedAt: string;
|
|
2170
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
2171
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
2172
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
2173
|
+
originalType: string | null;
|
|
2174
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
2175
|
+
closedAt: string | null;
|
|
2176
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
2177
|
+
closedBy: string | null;
|
|
2178
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
2179
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
2180
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
2181
|
+
parentEpic: {
|
|
2182
|
+
id: (string | number) | null;
|
|
2183
|
+
iid: (string | number) | null;
|
|
2184
|
+
title: string | null;
|
|
2185
|
+
url: string | null;
|
|
2186
|
+
} | null;
|
|
2187
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
2188
|
+
parentIssueUrl: string | null;
|
|
2189
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
2190
|
+
subIssues: {
|
|
2191
|
+
total: string | number;
|
|
2192
|
+
completed: string | number;
|
|
2193
|
+
} | null;
|
|
2194
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
2195
|
+
blockingCount: (string | number) | null;
|
|
2196
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
2197
|
+
blockedByCount: (string | number) | null;
|
|
2198
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
2199
|
+
timeStats: {
|
|
2200
|
+
estimateSeconds: string | number;
|
|
2201
|
+
spentSeconds: string | number;
|
|
2202
|
+
} | null;
|
|
2203
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
2204
|
+
taskCompletion: {
|
|
2205
|
+
total: string | number;
|
|
2206
|
+
completed: string | number;
|
|
2207
|
+
} | null;
|
|
2208
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
2209
|
+
weight: (string | number) | null;
|
|
2210
|
+
dueDate: string | null;
|
|
2211
|
+
startDate: string | null;
|
|
2212
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
2213
|
+
healthStatus: string | null;
|
|
2214
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
2215
|
+
severity: string | null;
|
|
1902
2216
|
iteration: {
|
|
1903
2217
|
id: string | number;
|
|
1904
2218
|
title: string;
|
|
@@ -1963,6 +2277,10 @@ export interface components {
|
|
|
1963
2277
|
}[];
|
|
1964
2278
|
updatedAt: string;
|
|
1965
2279
|
mergedAt: string | null;
|
|
2280
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
2281
|
+
mergedBy: string | null;
|
|
2282
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
2283
|
+
targetBranch: string | null;
|
|
1966
2284
|
reviewRequestedAt: string | null;
|
|
1967
2285
|
volume: {
|
|
1968
2286
|
additions: string | number;
|
|
@@ -2137,6 +2455,52 @@ export interface operations {
|
|
|
2137
2455
|
author: string | null;
|
|
2138
2456
|
createdAt: string;
|
|
2139
2457
|
updatedAt: string;
|
|
2458
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
2459
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
2460
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
2461
|
+
originalType: string | null;
|
|
2462
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
2463
|
+
closedAt: string | null;
|
|
2464
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
2465
|
+
closedBy: string | null;
|
|
2466
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
2467
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
2468
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
2469
|
+
parentEpic: {
|
|
2470
|
+
id: (string | number) | null;
|
|
2471
|
+
iid: (string | number) | null;
|
|
2472
|
+
title: string | null;
|
|
2473
|
+
url: string | null;
|
|
2474
|
+
} | null;
|
|
2475
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
2476
|
+
parentIssueUrl: string | null;
|
|
2477
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
2478
|
+
subIssues: {
|
|
2479
|
+
total: string | number;
|
|
2480
|
+
completed: string | number;
|
|
2481
|
+
} | null;
|
|
2482
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
2483
|
+
blockingCount: (string | number) | null;
|
|
2484
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
2485
|
+
blockedByCount: (string | number) | null;
|
|
2486
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
2487
|
+
timeStats: {
|
|
2488
|
+
estimateSeconds: string | number;
|
|
2489
|
+
spentSeconds: string | number;
|
|
2490
|
+
} | null;
|
|
2491
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
2492
|
+
taskCompletion: {
|
|
2493
|
+
total: string | number;
|
|
2494
|
+
completed: string | number;
|
|
2495
|
+
} | null;
|
|
2496
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
2497
|
+
weight: (string | number) | null;
|
|
2498
|
+
dueDate: string | null;
|
|
2499
|
+
startDate: string | null;
|
|
2500
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
2501
|
+
healthStatus: string | null;
|
|
2502
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
2503
|
+
severity: string | null;
|
|
2140
2504
|
iteration: {
|
|
2141
2505
|
id: string | number;
|
|
2142
2506
|
title: string;
|
|
@@ -2201,6 +2565,10 @@ export interface operations {
|
|
|
2201
2565
|
}[];
|
|
2202
2566
|
updatedAt: string;
|
|
2203
2567
|
mergedAt: string | null;
|
|
2568
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
2569
|
+
mergedBy: string | null;
|
|
2570
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
2571
|
+
targetBranch: string | null;
|
|
2204
2572
|
reviewRequestedAt: string | null;
|
|
2205
2573
|
volume: {
|
|
2206
2574
|
additions: string | number;
|
|
@@ -2326,6 +2694,52 @@ export interface operations {
|
|
|
2326
2694
|
author: string | null;
|
|
2327
2695
|
createdAt: string;
|
|
2328
2696
|
updatedAt: string;
|
|
2697
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
2698
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
2699
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
2700
|
+
originalType: string | null;
|
|
2701
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
2702
|
+
closedAt: string | null;
|
|
2703
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
2704
|
+
closedBy: string | null;
|
|
2705
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
2706
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
2707
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
2708
|
+
parentEpic: {
|
|
2709
|
+
id: (string | number) | null;
|
|
2710
|
+
iid: (string | number) | null;
|
|
2711
|
+
title: string | null;
|
|
2712
|
+
url: string | null;
|
|
2713
|
+
} | null;
|
|
2714
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
2715
|
+
parentIssueUrl: string | null;
|
|
2716
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
2717
|
+
subIssues: {
|
|
2718
|
+
total: string | number;
|
|
2719
|
+
completed: string | number;
|
|
2720
|
+
} | null;
|
|
2721
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
2722
|
+
blockingCount: (string | number) | null;
|
|
2723
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
2724
|
+
blockedByCount: (string | number) | null;
|
|
2725
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
2726
|
+
timeStats: {
|
|
2727
|
+
estimateSeconds: string | number;
|
|
2728
|
+
spentSeconds: string | number;
|
|
2729
|
+
} | null;
|
|
2730
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
2731
|
+
taskCompletion: {
|
|
2732
|
+
total: string | number;
|
|
2733
|
+
completed: string | number;
|
|
2734
|
+
} | null;
|
|
2735
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
2736
|
+
weight: (string | number) | null;
|
|
2737
|
+
dueDate: string | null;
|
|
2738
|
+
startDate: string | null;
|
|
2739
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
2740
|
+
healthStatus: string | null;
|
|
2741
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
2742
|
+
severity: string | null;
|
|
2329
2743
|
iteration: {
|
|
2330
2744
|
id: string | number;
|
|
2331
2745
|
title: string;
|
|
@@ -2390,6 +2804,10 @@ export interface operations {
|
|
|
2390
2804
|
}[];
|
|
2391
2805
|
updatedAt: string;
|
|
2392
2806
|
mergedAt: string | null;
|
|
2807
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
2808
|
+
mergedBy: string | null;
|
|
2809
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
2810
|
+
targetBranch: string | null;
|
|
2393
2811
|
reviewRequestedAt: string | null;
|
|
2394
2812
|
volume: {
|
|
2395
2813
|
additions: string | number;
|
|
@@ -2515,6 +2933,52 @@ export interface operations {
|
|
|
2515
2933
|
author: string | null;
|
|
2516
2934
|
createdAt: string;
|
|
2517
2935
|
updatedAt: string;
|
|
2936
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
2937
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
2938
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
2939
|
+
originalType: string | null;
|
|
2940
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
2941
|
+
closedAt: string | null;
|
|
2942
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
2943
|
+
closedBy: string | null;
|
|
2944
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
2945
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
2946
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
2947
|
+
parentEpic: {
|
|
2948
|
+
id: (string | number) | null;
|
|
2949
|
+
iid: (string | number) | null;
|
|
2950
|
+
title: string | null;
|
|
2951
|
+
url: string | null;
|
|
2952
|
+
} | null;
|
|
2953
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
2954
|
+
parentIssueUrl: string | null;
|
|
2955
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
2956
|
+
subIssues: {
|
|
2957
|
+
total: string | number;
|
|
2958
|
+
completed: string | number;
|
|
2959
|
+
} | null;
|
|
2960
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
2961
|
+
blockingCount: (string | number) | null;
|
|
2962
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
2963
|
+
blockedByCount: (string | number) | null;
|
|
2964
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
2965
|
+
timeStats: {
|
|
2966
|
+
estimateSeconds: string | number;
|
|
2967
|
+
spentSeconds: string | number;
|
|
2968
|
+
} | null;
|
|
2969
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
2970
|
+
taskCompletion: {
|
|
2971
|
+
total: string | number;
|
|
2972
|
+
completed: string | number;
|
|
2973
|
+
} | null;
|
|
2974
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
2975
|
+
weight: (string | number) | null;
|
|
2976
|
+
dueDate: string | null;
|
|
2977
|
+
startDate: string | null;
|
|
2978
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
2979
|
+
healthStatus: string | null;
|
|
2980
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
2981
|
+
severity: string | null;
|
|
2518
2982
|
iteration: {
|
|
2519
2983
|
id: string | number;
|
|
2520
2984
|
title: string;
|
|
@@ -2579,6 +3043,10 @@ export interface operations {
|
|
|
2579
3043
|
}[];
|
|
2580
3044
|
updatedAt: string;
|
|
2581
3045
|
mergedAt: string | null;
|
|
3046
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
3047
|
+
mergedBy: string | null;
|
|
3048
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
3049
|
+
targetBranch: string | null;
|
|
2582
3050
|
reviewRequestedAt: string | null;
|
|
2583
3051
|
volume: {
|
|
2584
3052
|
additions: string | number;
|
|
@@ -2760,6 +3228,52 @@ export interface operations {
|
|
|
2760
3228
|
author: string | null;
|
|
2761
3229
|
createdAt: string;
|
|
2762
3230
|
updatedAt: string;
|
|
3231
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
3232
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
3233
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
3234
|
+
originalType: string | null;
|
|
3235
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
3236
|
+
closedAt: string | null;
|
|
3237
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
3238
|
+
closedBy: string | null;
|
|
3239
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
3240
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
3241
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
3242
|
+
parentEpic: {
|
|
3243
|
+
id: (string | number) | null;
|
|
3244
|
+
iid: (string | number) | null;
|
|
3245
|
+
title: string | null;
|
|
3246
|
+
url: string | null;
|
|
3247
|
+
} | null;
|
|
3248
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
3249
|
+
parentIssueUrl: string | null;
|
|
3250
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
3251
|
+
subIssues: {
|
|
3252
|
+
total: string | number;
|
|
3253
|
+
completed: string | number;
|
|
3254
|
+
} | null;
|
|
3255
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
3256
|
+
blockingCount: (string | number) | null;
|
|
3257
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
3258
|
+
blockedByCount: (string | number) | null;
|
|
3259
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
3260
|
+
timeStats: {
|
|
3261
|
+
estimateSeconds: string | number;
|
|
3262
|
+
spentSeconds: string | number;
|
|
3263
|
+
} | null;
|
|
3264
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
3265
|
+
taskCompletion: {
|
|
3266
|
+
total: string | number;
|
|
3267
|
+
completed: string | number;
|
|
3268
|
+
} | null;
|
|
3269
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
3270
|
+
weight: (string | number) | null;
|
|
3271
|
+
dueDate: string | null;
|
|
3272
|
+
startDate: string | null;
|
|
3273
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
3274
|
+
healthStatus: string | null;
|
|
3275
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
3276
|
+
severity: string | null;
|
|
2763
3277
|
iteration: {
|
|
2764
3278
|
id: string | number;
|
|
2765
3279
|
title: string;
|
|
@@ -2824,6 +3338,10 @@ export interface operations {
|
|
|
2824
3338
|
}[];
|
|
2825
3339
|
updatedAt: string;
|
|
2826
3340
|
mergedAt: string | null;
|
|
3341
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
3342
|
+
mergedBy: string | null;
|
|
3343
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
3344
|
+
targetBranch: string | null;
|
|
2827
3345
|
reviewRequestedAt: string | null;
|
|
2828
3346
|
volume: {
|
|
2829
3347
|
additions: string | number;
|
|
@@ -2944,6 +3462,52 @@ export interface operations {
|
|
|
2944
3462
|
author: string | null;
|
|
2945
3463
|
createdAt: string;
|
|
2946
3464
|
updatedAt: string;
|
|
3465
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
3466
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
3467
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
3468
|
+
originalType: string | null;
|
|
3469
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
3470
|
+
closedAt: string | null;
|
|
3471
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
3472
|
+
closedBy: string | null;
|
|
3473
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
3474
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
3475
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
3476
|
+
parentEpic: {
|
|
3477
|
+
id: (string | number) | null;
|
|
3478
|
+
iid: (string | number) | null;
|
|
3479
|
+
title: string | null;
|
|
3480
|
+
url: string | null;
|
|
3481
|
+
} | null;
|
|
3482
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
3483
|
+
parentIssueUrl: string | null;
|
|
3484
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
3485
|
+
subIssues: {
|
|
3486
|
+
total: string | number;
|
|
3487
|
+
completed: string | number;
|
|
3488
|
+
} | null;
|
|
3489
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
3490
|
+
blockingCount: (string | number) | null;
|
|
3491
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
3492
|
+
blockedByCount: (string | number) | null;
|
|
3493
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
3494
|
+
timeStats: {
|
|
3495
|
+
estimateSeconds: string | number;
|
|
3496
|
+
spentSeconds: string | number;
|
|
3497
|
+
} | null;
|
|
3498
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
3499
|
+
taskCompletion: {
|
|
3500
|
+
total: string | number;
|
|
3501
|
+
completed: string | number;
|
|
3502
|
+
} | null;
|
|
3503
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
3504
|
+
weight: (string | number) | null;
|
|
3505
|
+
dueDate: string | null;
|
|
3506
|
+
startDate: string | null;
|
|
3507
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
3508
|
+
healthStatus: string | null;
|
|
3509
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
3510
|
+
severity: string | null;
|
|
2947
3511
|
iteration: {
|
|
2948
3512
|
id: string | number;
|
|
2949
3513
|
title: string;
|
|
@@ -3008,6 +3572,10 @@ export interface operations {
|
|
|
3008
3572
|
}[];
|
|
3009
3573
|
updatedAt: string;
|
|
3010
3574
|
mergedAt: string | null;
|
|
3575
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
3576
|
+
mergedBy: string | null;
|
|
3577
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
3578
|
+
targetBranch: string | null;
|
|
3011
3579
|
reviewRequestedAt: string | null;
|
|
3012
3580
|
volume: {
|
|
3013
3581
|
additions: string | number;
|
|
@@ -3128,6 +3696,52 @@ export interface operations {
|
|
|
3128
3696
|
author: string | null;
|
|
3129
3697
|
createdAt: string;
|
|
3130
3698
|
updatedAt: string;
|
|
3699
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
3700
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
3701
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
3702
|
+
originalType: string | null;
|
|
3703
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
3704
|
+
closedAt: string | null;
|
|
3705
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
3706
|
+
closedBy: string | null;
|
|
3707
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
3708
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
3709
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
3710
|
+
parentEpic: {
|
|
3711
|
+
id: (string | number) | null;
|
|
3712
|
+
iid: (string | number) | null;
|
|
3713
|
+
title: string | null;
|
|
3714
|
+
url: string | null;
|
|
3715
|
+
} | null;
|
|
3716
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
3717
|
+
parentIssueUrl: string | null;
|
|
3718
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
3719
|
+
subIssues: {
|
|
3720
|
+
total: string | number;
|
|
3721
|
+
completed: string | number;
|
|
3722
|
+
} | null;
|
|
3723
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
3724
|
+
blockingCount: (string | number) | null;
|
|
3725
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
3726
|
+
blockedByCount: (string | number) | null;
|
|
3727
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
3728
|
+
timeStats: {
|
|
3729
|
+
estimateSeconds: string | number;
|
|
3730
|
+
spentSeconds: string | number;
|
|
3731
|
+
} | null;
|
|
3732
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
3733
|
+
taskCompletion: {
|
|
3734
|
+
total: string | number;
|
|
3735
|
+
completed: string | number;
|
|
3736
|
+
} | null;
|
|
3737
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
3738
|
+
weight: (string | number) | null;
|
|
3739
|
+
dueDate: string | null;
|
|
3740
|
+
startDate: string | null;
|
|
3741
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
3742
|
+
healthStatus: string | null;
|
|
3743
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
3744
|
+
severity: string | null;
|
|
3131
3745
|
iteration: {
|
|
3132
3746
|
id: string | number;
|
|
3133
3747
|
title: string;
|
|
@@ -3192,6 +3806,10 @@ export interface operations {
|
|
|
3192
3806
|
}[];
|
|
3193
3807
|
updatedAt: string;
|
|
3194
3808
|
mergedAt: string | null;
|
|
3809
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
3810
|
+
mergedBy: string | null;
|
|
3811
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
3812
|
+
targetBranch: string | null;
|
|
3195
3813
|
reviewRequestedAt: string | null;
|
|
3196
3814
|
volume: {
|
|
3197
3815
|
additions: string | number;
|
|
@@ -4206,6 +4824,56 @@ export interface operations {
|
|
|
4206
4824
|
source: "github" | "gitlab";
|
|
4207
4825
|
repo: string;
|
|
4208
4826
|
type: "pr" | "mr" | "issue";
|
|
4827
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
4828
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
4829
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
4830
|
+
originalType: string | null;
|
|
4831
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
4832
|
+
closedAt: string | null;
|
|
4833
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
4834
|
+
closedBy: string | null;
|
|
4835
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
4836
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
4837
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
4838
|
+
parentEpic: {
|
|
4839
|
+
id: (string | number) | null;
|
|
4840
|
+
iid: (string | number) | null;
|
|
4841
|
+
title: string | null;
|
|
4842
|
+
url: string | null;
|
|
4843
|
+
} | null;
|
|
4844
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
4845
|
+
parentIssueUrl: string | null;
|
|
4846
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
4847
|
+
subIssues: {
|
|
4848
|
+
total: string | number;
|
|
4849
|
+
completed: string | number;
|
|
4850
|
+
} | null;
|
|
4851
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
4852
|
+
blockingCount: (string | number) | null;
|
|
4853
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
4854
|
+
blockedByCount: (string | number) | null;
|
|
4855
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
4856
|
+
timeStats: {
|
|
4857
|
+
estimateSeconds: string | number;
|
|
4858
|
+
spentSeconds: string | number;
|
|
4859
|
+
} | null;
|
|
4860
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
4861
|
+
taskCompletion: {
|
|
4862
|
+
total: string | number;
|
|
4863
|
+
completed: string | number;
|
|
4864
|
+
} | null;
|
|
4865
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
4866
|
+
weight: (string | number) | null;
|
|
4867
|
+
dueDate: string | null;
|
|
4868
|
+
startDate: string | null;
|
|
4869
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
4870
|
+
healthStatus: string | null;
|
|
4871
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
4872
|
+
severity: string | null;
|
|
4873
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
4874
|
+
mergedBy: string | null;
|
|
4875
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
4876
|
+
targetBranch: string | null;
|
|
4209
4877
|
number: string | number;
|
|
4210
4878
|
title: string;
|
|
4211
4879
|
body: string | null;
|
|
@@ -4262,6 +4930,56 @@ export interface operations {
|
|
|
4262
4930
|
source: "github" | "gitlab";
|
|
4263
4931
|
repo: string;
|
|
4264
4932
|
type: "pr" | "mr" | "issue";
|
|
4933
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
4934
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
4935
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
4936
|
+
originalType: string | null;
|
|
4937
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
4938
|
+
closedAt: string | null;
|
|
4939
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
4940
|
+
closedBy: string | null;
|
|
4941
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
4942
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
4943
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
4944
|
+
parentEpic: {
|
|
4945
|
+
id: (string | number) | null;
|
|
4946
|
+
iid: (string | number) | null;
|
|
4947
|
+
title: string | null;
|
|
4948
|
+
url: string | null;
|
|
4949
|
+
} | null;
|
|
4950
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
4951
|
+
parentIssueUrl: string | null;
|
|
4952
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
4953
|
+
subIssues: {
|
|
4954
|
+
total: string | number;
|
|
4955
|
+
completed: string | number;
|
|
4956
|
+
} | null;
|
|
4957
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
4958
|
+
blockingCount: (string | number) | null;
|
|
4959
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
4960
|
+
blockedByCount: (string | number) | null;
|
|
4961
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
4962
|
+
timeStats: {
|
|
4963
|
+
estimateSeconds: string | number;
|
|
4964
|
+
spentSeconds: string | number;
|
|
4965
|
+
} | null;
|
|
4966
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
4967
|
+
taskCompletion: {
|
|
4968
|
+
total: string | number;
|
|
4969
|
+
completed: string | number;
|
|
4970
|
+
} | null;
|
|
4971
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
4972
|
+
weight: (string | number) | null;
|
|
4973
|
+
dueDate: string | null;
|
|
4974
|
+
startDate: string | null;
|
|
4975
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
4976
|
+
healthStatus: string | null;
|
|
4977
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
4978
|
+
severity: string | null;
|
|
4979
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
4980
|
+
mergedBy: string | null;
|
|
4981
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
4982
|
+
targetBranch: string | null;
|
|
4265
4983
|
number: string | number;
|
|
4266
4984
|
title: string;
|
|
4267
4985
|
body: string | null;
|
|
@@ -4318,6 +5036,56 @@ export interface operations {
|
|
|
4318
5036
|
source: "github" | "gitlab";
|
|
4319
5037
|
repo: string;
|
|
4320
5038
|
type: "pr" | "mr" | "issue";
|
|
5039
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
5040
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
5041
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
5042
|
+
originalType: string | null;
|
|
5043
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
5044
|
+
closedAt: string | null;
|
|
5045
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
5046
|
+
closedBy: string | null;
|
|
5047
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
5048
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
5049
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
5050
|
+
parentEpic: {
|
|
5051
|
+
id: (string | number) | null;
|
|
5052
|
+
iid: (string | number) | null;
|
|
5053
|
+
title: string | null;
|
|
5054
|
+
url: string | null;
|
|
5055
|
+
} | null;
|
|
5056
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
5057
|
+
parentIssueUrl: string | null;
|
|
5058
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
5059
|
+
subIssues: {
|
|
5060
|
+
total: string | number;
|
|
5061
|
+
completed: string | number;
|
|
5062
|
+
} | null;
|
|
5063
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
5064
|
+
blockingCount: (string | number) | null;
|
|
5065
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
5066
|
+
blockedByCount: (string | number) | null;
|
|
5067
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
5068
|
+
timeStats: {
|
|
5069
|
+
estimateSeconds: string | number;
|
|
5070
|
+
spentSeconds: string | number;
|
|
5071
|
+
} | null;
|
|
5072
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
5073
|
+
taskCompletion: {
|
|
5074
|
+
total: string | number;
|
|
5075
|
+
completed: string | number;
|
|
5076
|
+
} | null;
|
|
5077
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
5078
|
+
weight: (string | number) | null;
|
|
5079
|
+
dueDate: string | null;
|
|
5080
|
+
startDate: string | null;
|
|
5081
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
5082
|
+
healthStatus: string | null;
|
|
5083
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
5084
|
+
severity: string | null;
|
|
5085
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
5086
|
+
mergedBy: string | null;
|
|
5087
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
5088
|
+
targetBranch: string | null;
|
|
4321
5089
|
number: string | number;
|
|
4322
5090
|
title: string;
|
|
4323
5091
|
body: string | null;
|
|
@@ -4507,6 +5275,10 @@ export interface operations {
|
|
|
4507
5275
|
}[];
|
|
4508
5276
|
updatedAt: string;
|
|
4509
5277
|
mergedAt: string | null;
|
|
5278
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
5279
|
+
mergedBy: string | null;
|
|
5280
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
5281
|
+
targetBranch: string | null;
|
|
4510
5282
|
reviewRequestedAt: string | null;
|
|
4511
5283
|
volume: {
|
|
4512
5284
|
additions: string | number;
|
|
@@ -4625,6 +5397,52 @@ export interface operations {
|
|
|
4625
5397
|
author: string | null;
|
|
4626
5398
|
createdAt: string;
|
|
4627
5399
|
updatedAt: string;
|
|
5400
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
5401
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
5402
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
5403
|
+
originalType: string | null;
|
|
5404
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
5405
|
+
closedAt: string | null;
|
|
5406
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
5407
|
+
closedBy: string | null;
|
|
5408
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
5409
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
5410
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
5411
|
+
parentEpic: {
|
|
5412
|
+
id: (string | number) | null;
|
|
5413
|
+
iid: (string | number) | null;
|
|
5414
|
+
title: string | null;
|
|
5415
|
+
url: string | null;
|
|
5416
|
+
} | null;
|
|
5417
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
5418
|
+
parentIssueUrl: string | null;
|
|
5419
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
5420
|
+
subIssues: {
|
|
5421
|
+
total: string | number;
|
|
5422
|
+
completed: string | number;
|
|
5423
|
+
} | null;
|
|
5424
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
5425
|
+
blockingCount: (string | number) | null;
|
|
5426
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
5427
|
+
blockedByCount: (string | number) | null;
|
|
5428
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
5429
|
+
timeStats: {
|
|
5430
|
+
estimateSeconds: string | number;
|
|
5431
|
+
spentSeconds: string | number;
|
|
5432
|
+
} | null;
|
|
5433
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
5434
|
+
taskCompletion: {
|
|
5435
|
+
total: string | number;
|
|
5436
|
+
completed: string | number;
|
|
5437
|
+
} | null;
|
|
5438
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
5439
|
+
weight: (string | number) | null;
|
|
5440
|
+
dueDate: string | null;
|
|
5441
|
+
startDate: string | null;
|
|
5442
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
5443
|
+
healthStatus: string | null;
|
|
5444
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
5445
|
+
severity: string | null;
|
|
4628
5446
|
iteration: {
|
|
4629
5447
|
id: string | number;
|
|
4630
5448
|
title: string;
|
|
@@ -4729,6 +5547,10 @@ export interface operations {
|
|
|
4729
5547
|
}[];
|
|
4730
5548
|
updatedAt: string;
|
|
4731
5549
|
mergedAt: string | null;
|
|
5550
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
5551
|
+
mergedBy: string | null;
|
|
5552
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
5553
|
+
targetBranch: string | null;
|
|
4732
5554
|
reviewRequestedAt: string | null;
|
|
4733
5555
|
volume: {
|
|
4734
5556
|
additions: string | number;
|
|
@@ -4847,6 +5669,52 @@ export interface operations {
|
|
|
4847
5669
|
author: string | null;
|
|
4848
5670
|
createdAt: string;
|
|
4849
5671
|
updatedAt: string;
|
|
5672
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
5673
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
5674
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
5675
|
+
originalType: string | null;
|
|
5676
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
5677
|
+
closedAt: string | null;
|
|
5678
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
5679
|
+
closedBy: string | null;
|
|
5680
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
5681
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
5682
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
5683
|
+
parentEpic: {
|
|
5684
|
+
id: (string | number) | null;
|
|
5685
|
+
iid: (string | number) | null;
|
|
5686
|
+
title: string | null;
|
|
5687
|
+
url: string | null;
|
|
5688
|
+
} | null;
|
|
5689
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
5690
|
+
parentIssueUrl: string | null;
|
|
5691
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
5692
|
+
subIssues: {
|
|
5693
|
+
total: string | number;
|
|
5694
|
+
completed: string | number;
|
|
5695
|
+
} | null;
|
|
5696
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
5697
|
+
blockingCount: (string | number) | null;
|
|
5698
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
5699
|
+
blockedByCount: (string | number) | null;
|
|
5700
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
5701
|
+
timeStats: {
|
|
5702
|
+
estimateSeconds: string | number;
|
|
5703
|
+
spentSeconds: string | number;
|
|
5704
|
+
} | null;
|
|
5705
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
5706
|
+
taskCompletion: {
|
|
5707
|
+
total: string | number;
|
|
5708
|
+
completed: string | number;
|
|
5709
|
+
} | null;
|
|
5710
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
5711
|
+
weight: (string | number) | null;
|
|
5712
|
+
dueDate: string | null;
|
|
5713
|
+
startDate: string | null;
|
|
5714
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
5715
|
+
healthStatus: string | null;
|
|
5716
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
5717
|
+
severity: string | null;
|
|
4850
5718
|
iteration: {
|
|
4851
5719
|
id: string | number;
|
|
4852
5720
|
title: string;
|
|
@@ -4951,6 +5819,10 @@ export interface operations {
|
|
|
4951
5819
|
}[];
|
|
4952
5820
|
updatedAt: string;
|
|
4953
5821
|
mergedAt: string | null;
|
|
5822
|
+
/** @description Login of whoever merged. GitLab only — GitHub's list payload omits it, so null there means unknown, not 'nobody'. */
|
|
5823
|
+
mergedBy: string | null;
|
|
5824
|
+
/** @description Branch merged INTO. The source side is `branch`. */
|
|
5825
|
+
targetBranch: string | null;
|
|
4954
5826
|
reviewRequestedAt: string | null;
|
|
4955
5827
|
volume: {
|
|
4956
5828
|
additions: string | number;
|
|
@@ -5069,6 +5941,52 @@ export interface operations {
|
|
|
5069
5941
|
author: string | null;
|
|
5070
5942
|
createdAt: string;
|
|
5071
5943
|
updatedAt: string;
|
|
5944
|
+
/** @description Normalised work item kind. `null` on a PR/MR, which is not an issue-like item. `other` means the provider named a kind outside this vocabulary — read `originalType` then, never treat `other` as a parse failure. */
|
|
5945
|
+
issueType: "issue" | "task" | "incident" | "test_case" | "other" | null;
|
|
5946
|
+
/** @description The provider's own word for the kind, unmapped: `task` on GitLab, `Feature` on a GitHub org that defined it. `null` when the provider said nothing. GitHub issue types are org-defined, so this is deliberately NOT normalised across providers — branch on `source` if you need the raw taxonomy. */
|
|
5947
|
+
originalType: string | null;
|
|
5948
|
+
/** @description When the item was closed. Distinct from `mergedAt` — a PR/MR can be closed without merging, and an issue is never merged. */
|
|
5949
|
+
closedAt: string | null;
|
|
5950
|
+
/** @description Login of whoever closed it. A LOGIN, never a display name — same strict rule as `author`, so it can be joined against `?author`. */
|
|
5951
|
+
closedBy: string | null;
|
|
5952
|
+
/** @description GitHub only. `not_planned` means the issue was closed WITHOUT being done — a delivery report that ignores this counts abandoned work as delivered. Always null on GitLab, which has no equivalent. */
|
|
5953
|
+
stateReason: "completed" | "not_planned" | "reopened" | null;
|
|
5954
|
+
/** @description GitLab parent epic, read from the issue's own payload. Epics themselves are NOT ingested (they are group-level), but this is enough to walk PR → issue → epic. Always null on GitHub. */
|
|
5955
|
+
parentEpic: {
|
|
5956
|
+
id: (string | number) | null;
|
|
5957
|
+
iid: (string | number) | null;
|
|
5958
|
+
title: string | null;
|
|
5959
|
+
url: string | null;
|
|
5960
|
+
} | null;
|
|
5961
|
+
/** @description GitHub parent issue, as an API url — the payload carries no id. Always null on GitLab, which expresses the same idea through `parentEpic`. */
|
|
5962
|
+
parentIssueUrl: string | null;
|
|
5963
|
+
/** @description GitHub sub-issue progress. Null when the issue has none. */
|
|
5964
|
+
subIssues: {
|
|
5965
|
+
total: string | number;
|
|
5966
|
+
completed: string | number;
|
|
5967
|
+
} | null;
|
|
5968
|
+
/** @description How many items THIS one blocks. Not the inverse of `blockedByCount` — the two directions are reported separately because GitLab only counts this one. */
|
|
5969
|
+
blockingCount: (string | number) | null;
|
|
5970
|
+
/** @description How many items block THIS one. GitHub only; GitLab's payload does not say, so null there means unknown, not zero. */
|
|
5971
|
+
blockedByCount: (string | number) | null;
|
|
5972
|
+
/** @description GitLab time tracking, in seconds. Null when the project does not use it. */
|
|
5973
|
+
timeStats: {
|
|
5974
|
+
estimateSeconds: string | number;
|
|
5975
|
+
spentSeconds: string | number;
|
|
5976
|
+
} | null;
|
|
5977
|
+
/** @description Checklist progress in the description ('3 of 5 tasks'). */
|
|
5978
|
+
taskCompletion: {
|
|
5979
|
+
total: string | number;
|
|
5980
|
+
completed: string | number;
|
|
5981
|
+
} | null;
|
|
5982
|
+
/** @description GitLab issue weight, passed through unchanged — no scale is imposed here. */
|
|
5983
|
+
weight: (string | number) | null;
|
|
5984
|
+
dueDate: string | null;
|
|
5985
|
+
startDate: string | null;
|
|
5986
|
+
/** @description GitLab health status (`on_track`, `needs_attention`, `at_risk`), verbatim. */
|
|
5987
|
+
healthStatus: string | null;
|
|
5988
|
+
/** @description Incident severity. Meaningful when `issueType === 'incident'`. */
|
|
5989
|
+
severity: string | null;
|
|
5072
5990
|
iteration: {
|
|
5073
5991
|
id: string | number;
|
|
5074
5992
|
title: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cesar-richard/git-connector-sdk",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "TypeScript SDK for the git-connector v1 API (work items + iterations aggregated from GitHub/GitLab). Version published on npm tracks server releases.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|