@cesar-richard/git-connector-sdk 4.19.1 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/schema.d.ts +145 -4
  2. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -1216,6 +1216,34 @@ export interface components {
1216
1216
  total: string | number;
1217
1217
  /** @description True when this page is not the whole window (`total > offset + issues.length`), OR when the server's internal candidate-loading ceiling was itself reached (see `total`) — in which case this is `true` even if the page looks complete by the slicing arithmetic alone. Raise `limit`/`offset` to see more. With `?application` set AND no `?limit` passed, candidate loading is already exhaustive (no SQL cap) before window filtering, so this is false and `total` is the exact count; passing `?limit` there opts back into normal paging and `truncated` is computed the same way as everywhere else. */
1218
1218
  truncated: boolean;
1219
+ /** @description MERGED PR/MRs in the window that no issue bills — the second kind of deliverable (a dependabot bump, a hotfix with no ticket), which until now counted in no CRA line at all. Disjoint from `issues` by construction: a PR/MR effectively billed by an issue (see `linkedActivities[].attributable`) is never listed here, which is what makes double billing impossible. Filtered by the same `?author`/`?identity` (on the RESOLVED attribution, so on the merger when the author is a bot), `?projectKey` (the CODE repo here), `?source` and `?application` (by repo ownership alone, never by issue claim) as `issues`. */
1220
+ standalone: {
1221
+ source: "github" | "gitlab";
1222
+ /** @description Dépôt de CODE de la MR/PR (`owner/repo` sur GitHub, `group/sub/project` sur GitLab) — jamais un tracker d'issues, contrairement au `projectKey` de `DeliverableIssue`. */
1223
+ projectKey: string;
1224
+ /** @description Numéro de la PR/MR dans son dépôt de code. À ne PAS confondre avec un numéro d'issue : les deux espaces de numérotation sont disjoints. */
1225
+ number: string | number;
1226
+ title: string;
1227
+ url: string;
1228
+ /** @description Horodatage du merge, et seul ancrage de fenêtre de ce livrable. Non nullable : une PR/MR non mergée n'est pas un livrable autonome du tout (même porte que pour les issues — fermée sans merge n'a rien livré). */
1229
+ mergedAt: string;
1230
+ author: string | null;
1231
+ /** @description Login de qui a mergé. Peuplé par la liste des MR sur GitLab et par l'enrichissement GraphQL sur GitHub ; `null` sur les PR GitHub synchronisées avant ce champ, tant qu'un backfill complet n'a pas tourné. */
1232
+ mergedBy: string | null;
1233
+ /** @description Qui est crédité. `null` quand la requête ne porte ni `?author` ni `?identity` — même convention que `issues[].attribution` : sans personne à qui imputer, la question n'est pas posée. Avec un filtre de personne, l'objet est toujours présent (voir `kind: "none"` pour « personne n'est résolvable »). */
1234
+ attribution: {
1235
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
1236
+ login: string | null;
1237
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
1238
+ kind: "author" | "merger" | "none";
1239
+ } | null;
1240
+ /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
1241
+ applications: string[];
1242
+ }[];
1243
+ /** @description Count of standalone deliverables matching the window/filters — NOT the page size, and deliberately NOT merged into `total`, which keeps describing `issues` alone. Compare against `standalone.length` + `offset` to know whether more remains. */
1244
+ standaloneTotal: string | number;
1245
+ /** @description True when this page is not the whole window for `standalone` (`standaloneTotal > offset + standalone.length`). Independent of `truncated`: `limit`/`offset` page the two arrays separately, so one can be complete while the other is not — a partial page must say so for each (the lesson of #72, and it holds for both arrays). */
1246
+ standaloneTruncated: boolean;
1219
1247
  };
1220
1248
  DeliveryReason: {
1221
1249
  /** @description Discriminator: WHY the deliveryState was set. `rule_label_added` = a delivery label was added in the window; `closed_in_window` = fallback (no rule, issue closed in the window); `in_progress_opened_label_active` = a configured opened-label is currently active; `in_progress_delivered_after_window` = delivery label was added AFTER the window; `in_progress_fallback_open` = fallback (no rule, issue is open). `rule_status_set` = a delivery STATUS was set in the window; `in_progress_opened_status_active` = an opened status is currently set; `in_progress_status_after_window` = the delivery status was set AFTER the window. */
@@ -2029,6 +2057,35 @@ export interface components {
2029
2057
  url: string | null;
2030
2058
  }[];
2031
2059
  };
2060
+ StandaloneAttribution: {
2061
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
2062
+ login: string | null;
2063
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
2064
+ kind: "author" | "merger" | "none";
2065
+ };
2066
+ StandaloneDeliverable: {
2067
+ source: "github" | "gitlab";
2068
+ /** @description Dépôt de CODE de la MR/PR (`owner/repo` sur GitHub, `group/sub/project` sur GitLab) — jamais un tracker d'issues, contrairement au `projectKey` de `DeliverableIssue`. */
2069
+ projectKey: string;
2070
+ /** @description Numéro de la PR/MR dans son dépôt de code. À ne PAS confondre avec un numéro d'issue : les deux espaces de numérotation sont disjoints. */
2071
+ number: string | number;
2072
+ title: string;
2073
+ url: string;
2074
+ /** @description Horodatage du merge, et seul ancrage de fenêtre de ce livrable. Non nullable : une PR/MR non mergée n'est pas un livrable autonome du tout (même porte que pour les issues — fermée sans merge n'a rien livré). */
2075
+ mergedAt: string;
2076
+ author: string | null;
2077
+ /** @description Login de qui a mergé. Peuplé par la liste des MR sur GitLab et par l'enrichissement GraphQL sur GitHub ; `null` sur les PR GitHub synchronisées avant ce champ, tant qu'un backfill complet n'a pas tourné. */
2078
+ mergedBy: string | null;
2079
+ /** @description Qui est crédité. `null` quand la requête ne porte ni `?author` ni `?identity` — même convention que `issues[].attribution` : sans personne à qui imputer, la question n'est pas posée. Avec un filtre de personne, l'objet est toujours présent (voir `kind: "none"` pour « personne n'est résolvable »). */
2080
+ attribution: {
2081
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
2082
+ login: string | null;
2083
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
2084
+ kind: "author" | "merger" | "none";
2085
+ } | null;
2086
+ /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
2087
+ applications: string[];
2088
+ };
2032
2089
  StateTransitionEventMeta: {
2033
2090
  prevState?: string | null;
2034
2091
  } & {
@@ -5591,19 +5648,19 @@ export interface operations {
5591
5648
  from?: string;
5592
5649
  /** @description Window end, ISO date (YYYY-MM-DD, inclusive end-of-day) or datetime. Required. */
5593
5650
  to?: string;
5594
- /** @description CSV of project keys to restrict to. */
5651
+ /** @description CSV of project keys to restrict to. On `issues` these are issue TRACKERS; on `standalone` the same values are matched against the CODE repo of the PR/MR (the two arrays do not share a key space). */
5595
5652
  projectKey?: string;
5596
- /** @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`. */
5653
+ /** @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`. Applies to `standalone` too, on its RESOLVED attribution — so on the MERGER when the PR's author is a bot, which is the whole point of counting dependabot bumps at all. */
5597
5654
  author?: string;
5598
5655
  /** @description Filter by user identity ID (resolves to all aliases for attribution). Mutually exclusive with ?author. */
5599
5656
  identity?: string;
5600
- /** @description Filter by application slug (see /v1/applications). An unknown slug returns 404, never an empty list. Combines freely with ?author/?identity. */
5657
+ /** @description Filter by application slug (see /v1/applications). An unknown slug returns 404, never an empty list. Combines freely with ?author/?identity. On `issues` the three-signal issue claim applies; on `standalone` a PR/MR is claimed by REPO OWNERSHIP alone, so only PR/MRs living in the application's code repos are kept. */
5601
5658
  application?: string;
5602
5659
  /** @description When '1', attaches `authorIdentity: null` on each issue (placeholder until deliverablesCompute exposes the attributed login — see CR-553). */
5603
5660
  withIdentity?: string;
5604
5661
  /** @description github | gitlab. */
5605
5662
  source?: string;
5606
- /** @description Max number of deliverables to return. Default 500, matching the historical (hardcoded) response size — raise it to see more of the window instead of guessing from a silently-capped list (GH #72). 0 is rejected (422): an empty page must never be read as 'nothing was delivered'. Paging does NOT reduce server work: `total` must describe the whole window, so every candidate in the window is loaded and run through `computeDeliverables` before the page is sliced. A consumer paging at limit=50 therefore pays one full window scan PER PAGE — prefer a single large limit. */
5663
+ /** @description Max number of deliverables to return — applied to `issues` and `standalone` INDEPENDENTLY (each array is sliced to this many, and each reports its own total/truncated flag). Default 500, matching the historical (hardcoded) response size — raise it to see more of the window instead of guessing from a silently-capped list (GH #72). 0 is rejected (422): an empty page must never be read as 'nothing was delivered'. Paging does NOT reduce server work: `total` must describe the whole window, so every candidate in the window is loaded and run through `computeDeliverables` before the page is sliced. A consumer paging at limit=50 therefore pays one full window scan PER PAGE — prefer a single large limit. */
5607
5664
  limit?: string | number;
5608
5665
  /** @description Number of deliverables to skip, for paging past `limit`. Passing it alone (without `limit`) is enough to opt into pagination — the default limit of 500 then applies. This is a contract change from the historical behaviour: passing EITHER `limit` or `offset`, including `offset=0`, now opts into pagination, so a filtered call (e.g. `?application=x&offset=0`) that used to return its whole window exhaustively is now paged at the default limit. */
5609
5666
  offset?: string | number;
@@ -5896,6 +5953,34 @@ export interface operations {
5896
5953
  total: string | number;
5897
5954
  /** @description True when this page is not the whole window (`total > offset + issues.length`), OR when the server's internal candidate-loading ceiling was itself reached (see `total`) — in which case this is `true` even if the page looks complete by the slicing arithmetic alone. Raise `limit`/`offset` to see more. With `?application` set AND no `?limit` passed, candidate loading is already exhaustive (no SQL cap) before window filtering, so this is false and `total` is the exact count; passing `?limit` there opts back into normal paging and `truncated` is computed the same way as everywhere else. */
5898
5955
  truncated: boolean;
5956
+ /** @description MERGED PR/MRs in the window that no issue bills — the second kind of deliverable (a dependabot bump, a hotfix with no ticket), which until now counted in no CRA line at all. Disjoint from `issues` by construction: a PR/MR effectively billed by an issue (see `linkedActivities[].attributable`) is never listed here, which is what makes double billing impossible. Filtered by the same `?author`/`?identity` (on the RESOLVED attribution, so on the merger when the author is a bot), `?projectKey` (the CODE repo here), `?source` and `?application` (by repo ownership alone, never by issue claim) as `issues`. */
5957
+ standalone: {
5958
+ source: "github" | "gitlab";
5959
+ /** @description Dépôt de CODE de la MR/PR (`owner/repo` sur GitHub, `group/sub/project` sur GitLab) — jamais un tracker d'issues, contrairement au `projectKey` de `DeliverableIssue`. */
5960
+ projectKey: string;
5961
+ /** @description Numéro de la PR/MR dans son dépôt de code. À ne PAS confondre avec un numéro d'issue : les deux espaces de numérotation sont disjoints. */
5962
+ number: string | number;
5963
+ title: string;
5964
+ url: string;
5965
+ /** @description Horodatage du merge, et seul ancrage de fenêtre de ce livrable. Non nullable : une PR/MR non mergée n'est pas un livrable autonome du tout (même porte que pour les issues — fermée sans merge n'a rien livré). */
5966
+ mergedAt: string;
5967
+ author: string | null;
5968
+ /** @description Login de qui a mergé. Peuplé par la liste des MR sur GitLab et par l'enrichissement GraphQL sur GitHub ; `null` sur les PR GitHub synchronisées avant ce champ, tant qu'un backfill complet n'a pas tourné. */
5969
+ mergedBy: string | null;
5970
+ /** @description Qui est crédité. `null` quand la requête ne porte ni `?author` ni `?identity` — même convention que `issues[].attribution` : sans personne à qui imputer, la question n'est pas posée. Avec un filtre de personne, l'objet est toujours présent (voir `kind: "none"` pour « personne n'est résolvable »). */
5971
+ attribution: {
5972
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
5973
+ login: string | null;
5974
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
5975
+ kind: "author" | "merger" | "none";
5976
+ } | null;
5977
+ /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
5978
+ applications: string[];
5979
+ }[];
5980
+ /** @description Count of standalone deliverables matching the window/filters — NOT the page size, and deliberately NOT merged into `total`, which keeps describing `issues` alone. Compare against `standalone.length` + `offset` to know whether more remains. */
5981
+ standaloneTotal: string | number;
5982
+ /** @description True when this page is not the whole window for `standalone` (`standaloneTotal > offset + standalone.length`). Independent of `truncated`: `limit`/`offset` page the two arrays separately, so one can be complete while the other is not — a partial page must say so for each (the lesson of #72, and it holds for both arrays). */
5983
+ standaloneTruncated: boolean;
5899
5984
  };
5900
5985
  "multipart/form-data": {
5901
5986
  issues: {
@@ -6174,6 +6259,34 @@ export interface operations {
6174
6259
  total: string | number;
6175
6260
  /** @description True when this page is not the whole window (`total > offset + issues.length`), OR when the server's internal candidate-loading ceiling was itself reached (see `total`) — in which case this is `true` even if the page looks complete by the slicing arithmetic alone. Raise `limit`/`offset` to see more. With `?application` set AND no `?limit` passed, candidate loading is already exhaustive (no SQL cap) before window filtering, so this is false and `total` is the exact count; passing `?limit` there opts back into normal paging and `truncated` is computed the same way as everywhere else. */
6176
6261
  truncated: boolean;
6262
+ /** @description MERGED PR/MRs in the window that no issue bills — the second kind of deliverable (a dependabot bump, a hotfix with no ticket), which until now counted in no CRA line at all. Disjoint from `issues` by construction: a PR/MR effectively billed by an issue (see `linkedActivities[].attributable`) is never listed here, which is what makes double billing impossible. Filtered by the same `?author`/`?identity` (on the RESOLVED attribution, so on the merger when the author is a bot), `?projectKey` (the CODE repo here), `?source` and `?application` (by repo ownership alone, never by issue claim) as `issues`. */
6263
+ standalone: {
6264
+ source: "github" | "gitlab";
6265
+ /** @description Dépôt de CODE de la MR/PR (`owner/repo` sur GitHub, `group/sub/project` sur GitLab) — jamais un tracker d'issues, contrairement au `projectKey` de `DeliverableIssue`. */
6266
+ projectKey: string;
6267
+ /** @description Numéro de la PR/MR dans son dépôt de code. À ne PAS confondre avec un numéro d'issue : les deux espaces de numérotation sont disjoints. */
6268
+ number: string | number;
6269
+ title: string;
6270
+ url: string;
6271
+ /** @description Horodatage du merge, et seul ancrage de fenêtre de ce livrable. Non nullable : une PR/MR non mergée n'est pas un livrable autonome du tout (même porte que pour les issues — fermée sans merge n'a rien livré). */
6272
+ mergedAt: string;
6273
+ author: string | null;
6274
+ /** @description Login de qui a mergé. Peuplé par la liste des MR sur GitLab et par l'enrichissement GraphQL sur GitHub ; `null` sur les PR GitHub synchronisées avant ce champ, tant qu'un backfill complet n'a pas tourné. */
6275
+ mergedBy: string | null;
6276
+ /** @description Qui est crédité. `null` quand la requête ne porte ni `?author` ni `?identity` — même convention que `issues[].attribution` : sans personne à qui imputer, la question n'est pas posée. Avec un filtre de personne, l'objet est toujours présent (voir `kind: "none"` pour « personne n'est résolvable »). */
6277
+ attribution: {
6278
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
6279
+ login: string | null;
6280
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
6281
+ kind: "author" | "merger" | "none";
6282
+ } | null;
6283
+ /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
6284
+ applications: string[];
6285
+ }[];
6286
+ /** @description Count of standalone deliverables matching the window/filters — NOT the page size, and deliberately NOT merged into `total`, which keeps describing `issues` alone. Compare against `standalone.length` + `offset` to know whether more remains. */
6287
+ standaloneTotal: string | number;
6288
+ /** @description True when this page is not the whole window for `standalone` (`standaloneTotal > offset + standalone.length`). Independent of `truncated`: `limit`/`offset` page the two arrays separately, so one can be complete while the other is not — a partial page must say so for each (the lesson of #72, and it holds for both arrays). */
6289
+ standaloneTruncated: boolean;
6177
6290
  };
6178
6291
  "text/plain": {
6179
6292
  issues: {
@@ -6452,6 +6565,34 @@ export interface operations {
6452
6565
  total: string | number;
6453
6566
  /** @description True when this page is not the whole window (`total > offset + issues.length`), OR when the server's internal candidate-loading ceiling was itself reached (see `total`) — in which case this is `true` even if the page looks complete by the slicing arithmetic alone. Raise `limit`/`offset` to see more. With `?application` set AND no `?limit` passed, candidate loading is already exhaustive (no SQL cap) before window filtering, so this is false and `total` is the exact count; passing `?limit` there opts back into normal paging and `truncated` is computed the same way as everywhere else. */
6454
6567
  truncated: boolean;
6568
+ /** @description MERGED PR/MRs in the window that no issue bills — the second kind of deliverable (a dependabot bump, a hotfix with no ticket), which until now counted in no CRA line at all. Disjoint from `issues` by construction: a PR/MR effectively billed by an issue (see `linkedActivities[].attributable`) is never listed here, which is what makes double billing impossible. Filtered by the same `?author`/`?identity` (on the RESOLVED attribution, so on the merger when the author is a bot), `?projectKey` (the CODE repo here), `?source` and `?application` (by repo ownership alone, never by issue claim) as `issues`. */
6569
+ standalone: {
6570
+ source: "github" | "gitlab";
6571
+ /** @description Dépôt de CODE de la MR/PR (`owner/repo` sur GitHub, `group/sub/project` sur GitLab) — jamais un tracker d'issues, contrairement au `projectKey` de `DeliverableIssue`. */
6572
+ projectKey: string;
6573
+ /** @description Numéro de la PR/MR dans son dépôt de code. À ne PAS confondre avec un numéro d'issue : les deux espaces de numérotation sont disjoints. */
6574
+ number: string | number;
6575
+ title: string;
6576
+ url: string;
6577
+ /** @description Horodatage du merge, et seul ancrage de fenêtre de ce livrable. Non nullable : une PR/MR non mergée n'est pas un livrable autonome du tout (même porte que pour les issues — fermée sans merge n'a rien livré). */
6578
+ mergedAt: string;
6579
+ author: string | null;
6580
+ /** @description Login de qui a mergé. Peuplé par la liste des MR sur GitLab et par l'enrichissement GraphQL sur GitHub ; `null` sur les PR GitHub synchronisées avant ce champ, tant qu'un backfill complet n'a pas tourné. */
6581
+ mergedBy: string | null;
6582
+ /** @description Qui est crédité. `null` quand la requête ne porte ni `?author` ni `?identity` — même convention que `issues[].attribution` : sans personne à qui imputer, la question n'est pas posée. Avec un filtre de personne, l'objet est toujours présent (voir `kind: "none"` pour « personne n'est résolvable »). */
6583
+ attribution: {
6584
+ /** @description Login crédité, ou null quand aucun des deux candidats n'est une personne résolvable. Jamais un nom d'affichage — même règle stricte que `author` partout ailleurs. */
6585
+ login: string | null;
6586
+ /** @description Quel signal a produit `login`. `author` = l'auteur de la PR/MR, le cas normal. `merger` = l'auteur est un bot (login suffixé `[bot]`), donc le travail réel est la relecture et le merge. `none` = ni l'un ni l'autre n'est une personne résolvable, et `login` est null. */
6587
+ kind: "author" | "merger" | "none";
6588
+ } | null;
6589
+ /** @description Slugs of the applications (see /v1/applications) that claim this item. A code-repo item (PR/MR) is claimed by the application that declares its repo; an issue is claimed by label match (declared `issueLabels`) OR by being referenced through a CONFIRMED link from a PR/MR in one of the application's code repos OR by being hosted in one of those code repos itself (the GitHub shape where the code repo is also the tracker) — the signals are a union, so the array can hold more than one slug. ORDER IS SIGNIFICANT: the array is sorted by DECREASING attachment-signal strength — a `label` claim first, then a `link` claim, then a `code_repo` claim, the order declared in the application config breaking ties at equal strength — and the FIRST slug is the application whose delivery rules govern this issue (its own rules per field, falling back to the tracker's field by field — see GET /v1/applications/{slug}/delivery-rules). A hand-placed scoped label is an assertion of ownership; an issue merely living in a code repo is an organisational coincidence, so the former governs. Empty array when the item is not attached to any application, in which case the tracker's rules govern. */
6590
+ applications: string[];
6591
+ }[];
6592
+ /** @description Count of standalone deliverables matching the window/filters — NOT the page size, and deliberately NOT merged into `total`, which keeps describing `issues` alone. Compare against `standalone.length` + `offset` to know whether more remains. */
6593
+ standaloneTotal: string | number;
6594
+ /** @description True when this page is not the whole window for `standalone` (`standaloneTotal > offset + standalone.length`). Independent of `truncated`: `limit`/`offset` page the two arrays separately, so one can be complete while the other is not — a partial page must say so for each (the lesson of #72, and it holds for both arrays). */
6595
+ standaloneTruncated: boolean;
6455
6596
  };
6456
6597
  };
6457
6598
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cesar-richard/git-connector-sdk",
3
- "version": "4.19.1",
3
+ "version": "4.20.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": {