@thinkai/tai-api-contract 2.34.0-pr.810.e54f7dcd → 2.35.0-pr.811.d57af044
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/dist/generated/openapi.d.ts +490 -37
- package/dist/generated/openapi.d.ts.map +1 -1
- package/dist/index.d.ts +1 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/journeySteps.d.ts +29 -0
- package/dist/journeySteps.d.ts.map +1 -0
- package/dist/journeySteps.js +171 -0
- package/dist/journeySteps.js.map +1 -0
- package/dist/journeySteps.test.d.ts +2 -0
- package/dist/journeySteps.test.d.ts.map +1 -0
- package/dist/journeySteps.test.js +47 -0
- package/dist/journeySteps.test.js.map +1 -0
- package/openapi/openapi.yaml +738 -66
- package/package.json +2 -1
- package/src/generated/openapi.ts +490 -37
- package/src/index.ts +10 -23
- package/src/journeySteps.test.ts +60 -0
- package/src/journeySteps.ts +190 -0
|
@@ -394,7 +394,7 @@ export interface paths {
|
|
|
394
394
|
};
|
|
395
395
|
/**
|
|
396
396
|
* Productivity insights — contributor drilldown
|
|
397
|
-
* @description Weekly and daily activity rollups for a single contributor on `/
|
|
397
|
+
* @description Weekly and daily activity rollups for a single contributor on `/insights/productivity/contributors/:loginOrId`. Accepts GitHub login slugs (preferred public URL), org-chart person ids (typically email), and synthetic GitHub scopes (`__github:{login}`) for contributors not in the org chart.
|
|
398
398
|
*/
|
|
399
399
|
get: operations["getProductivityInsightsContributor"];
|
|
400
400
|
put?: never;
|
|
@@ -641,7 +641,7 @@ export interface paths {
|
|
|
641
641
|
put?: never;
|
|
642
642
|
/**
|
|
643
643
|
* Create GitHub App installation URL
|
|
644
|
-
* @description Creates a GitHub App installation URL scoped to the workspace and caller. Body is optional; when omitted, defaults to `/
|
|
644
|
+
* @description Creates a GitHub App installation URL scoped to the workspace and caller. Body is optional; when omitted, defaults to `/onboarding/integrations` return path. Optional `pickerSession` (from user OAuth org picker) recovers `returnPath` from the server-side picker snapshot when the multi-hop authorize→install flow should return to the page where OAuth started.
|
|
645
645
|
*/
|
|
646
646
|
post: operations["postGithubInstallUrl"];
|
|
647
647
|
delete?: never;
|
|
@@ -1120,6 +1120,26 @@ export interface paths {
|
|
|
1120
1120
|
patch?: never;
|
|
1121
1121
|
trace?: never;
|
|
1122
1122
|
};
|
|
1123
|
+
"/workspaces/{workspaceId}/readiness/repos/by-slug/{providerSlug}": {
|
|
1124
|
+
parameters: {
|
|
1125
|
+
query?: never;
|
|
1126
|
+
header?: never;
|
|
1127
|
+
path?: never;
|
|
1128
|
+
cookie?: never;
|
|
1129
|
+
};
|
|
1130
|
+
/**
|
|
1131
|
+
* Single repo readiness by provider slug
|
|
1132
|
+
* @description Returns one stored repository scorecard keyed by `providerSlug` (`owner/repo`). Same response as `GET .../readiness/repos/{repoId}`. Unknown slug returns `404`.
|
|
1133
|
+
*/
|
|
1134
|
+
get: operations["getReadinessRepoBySlug"];
|
|
1135
|
+
put?: never;
|
|
1136
|
+
post?: never;
|
|
1137
|
+
delete?: never;
|
|
1138
|
+
options?: never;
|
|
1139
|
+
head?: never;
|
|
1140
|
+
patch?: never;
|
|
1141
|
+
trace?: never;
|
|
1142
|
+
};
|
|
1123
1143
|
"/workspaces/{workspaceId}/readiness/repos/{repoId}": {
|
|
1124
1144
|
parameters: {
|
|
1125
1145
|
query?: never;
|
|
@@ -1194,7 +1214,7 @@ export interface paths {
|
|
|
1194
1214
|
};
|
|
1195
1215
|
/**
|
|
1196
1216
|
* Workspace activity log (paginated)
|
|
1197
|
-
* @description Paginated, chronological feed of workspace-scoped lifecycle events: repository add/remove/re-add and GitHub integration add/remove. Inactive repos remain visible in this log. Filter by `eventType`, `actorUserId`, or date range (`since`/`until`).
|
|
1217
|
+
* @description Paginated, chronological feed of workspace-scoped lifecycle events: repository add/remove/re-add and GitHub integration add/remove. Inactive repos remain visible in this log. Filter by a single `eventType`, a coarse `eventCategory`/`productArea`, an `eventSubcategory` (a dotted event-type prefix that matches a whole lifecycle subgroup in one call, e.g. `integrations.cursor.execution_key`), `actorUserId`, or date range (`since`/`until`).
|
|
1198
1218
|
*/
|
|
1199
1219
|
get: operations["listWorkspaceActivity"];
|
|
1200
1220
|
put?: never;
|
|
@@ -1205,6 +1225,26 @@ export interface paths {
|
|
|
1205
1225
|
patch?: never;
|
|
1206
1226
|
trace?: never;
|
|
1207
1227
|
};
|
|
1228
|
+
"/workspaces/{workspaceId}/activity/export": {
|
|
1229
|
+
parameters: {
|
|
1230
|
+
query?: never;
|
|
1231
|
+
header?: never;
|
|
1232
|
+
path?: never;
|
|
1233
|
+
cookie?: never;
|
|
1234
|
+
};
|
|
1235
|
+
/**
|
|
1236
|
+
* Export workspace activity log as CSV
|
|
1237
|
+
* @description Export the workspace activity log as an RFC 4180 CSV file (one row per event). Accepts the same filters as `GET /workspaces/{workspaceId}/activity` (`eventType`, `eventCategory`, `eventSubcategory`, `productArea`, `actorUserId`, `since`, `until`, `search`, `sort`, `order`); `limit`/`offset` are ignored — the export returns up to 50000 matching rows within the sort. Columns: occurredAt, eventType, eventCategory, actorType, actorName, actorEmail, repoName, integrationType, metadata. Opaque internal identifiers (actorUserId, repoId, integrationId, fixRequestId, issueId, readinessRunId) are omitted — the human-readable equivalents are already present and the IDs carry no value in a user-facing export. The response sets `Content-Disposition: attachment` with a `.csv` filename.
|
|
1238
|
+
*/
|
|
1239
|
+
get: operations["exportWorkspaceActivity"];
|
|
1240
|
+
put?: never;
|
|
1241
|
+
post?: never;
|
|
1242
|
+
delete?: never;
|
|
1243
|
+
options?: never;
|
|
1244
|
+
head?: never;
|
|
1245
|
+
patch?: never;
|
|
1246
|
+
trace?: never;
|
|
1247
|
+
};
|
|
1208
1248
|
"/workspaces/{workspaceId}/readiness/score-history": {
|
|
1209
1249
|
parameters: {
|
|
1210
1250
|
query?: never;
|
|
@@ -1549,6 +1589,50 @@ export interface paths {
|
|
|
1549
1589
|
patch?: never;
|
|
1550
1590
|
trace?: never;
|
|
1551
1591
|
};
|
|
1592
|
+
"/workspaces/{workspaceId}/repo-eligibility": {
|
|
1593
|
+
parameters: {
|
|
1594
|
+
query?: never;
|
|
1595
|
+
header?: never;
|
|
1596
|
+
path?: never;
|
|
1597
|
+
cookie?: never;
|
|
1598
|
+
};
|
|
1599
|
+
/**
|
|
1600
|
+
* Get repo-sync eligibility gate (defaults + per-workspace overrides)
|
|
1601
|
+
* @description Returns the effective repo-sync eligibility gate (archived / fork / size / count) for the workspace: the global `defaults`, any per-workspace `overrides`, the merged `effective` values, and whether the caller can edit without platform-admin (`canEditUnrestricted`). Member-level read access.
|
|
1602
|
+
*/
|
|
1603
|
+
get: operations["getWorkspaceRepoEligibility"];
|
|
1604
|
+
/**
|
|
1605
|
+
* Set per-workspace repo-sync eligibility overrides
|
|
1606
|
+
* @description Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides. **Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks). **Workspace admins** may only make the gate *more restrictive* than the platform defaults (lower caps, exclude archived/forks) — exceeding a platform limit returns `403` (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
1607
|
+
*/
|
|
1608
|
+
put: operations["putWorkspaceRepoEligibility"];
|
|
1609
|
+
post?: never;
|
|
1610
|
+
delete?: never;
|
|
1611
|
+
options?: never;
|
|
1612
|
+
head?: never;
|
|
1613
|
+
patch?: never;
|
|
1614
|
+
trace?: never;
|
|
1615
|
+
};
|
|
1616
|
+
"/workspaces/{workspaceId}/repo-eligibility/refresh-languages": {
|
|
1617
|
+
parameters: {
|
|
1618
|
+
query?: never;
|
|
1619
|
+
header?: never;
|
|
1620
|
+
path?: never;
|
|
1621
|
+
cookie?: never;
|
|
1622
|
+
};
|
|
1623
|
+
get?: never;
|
|
1624
|
+
put?: never;
|
|
1625
|
+
/**
|
|
1626
|
+
* Force a language/stack re-detection on the next sync
|
|
1627
|
+
* @description Admin maintenance action: invalidate the cached language/stack freshness marker so the next GitHub repo sync re-fetches `GET /repos/{owner}/{repo}/languages` and recomputes the per-language breakdown and supported stacks. Use after adding a newly-supported language to a repo, or when a repo's stack detection looks stale. Optionally scope to a single repo via `repoSlug` (`owner/name`); omit it to reset every repo in the workspace. Requires workspace admin or platform admin. The refresh itself happens on the next sync (e.g. when the GitHub repo list is loaded with `refresh=true`); the readiness scan also refreshes the breakdown on each successful run.
|
|
1628
|
+
*/
|
|
1629
|
+
post: operations["refreshWorkspaceRepoLanguages"];
|
|
1630
|
+
delete?: never;
|
|
1631
|
+
options?: never;
|
|
1632
|
+
head?: never;
|
|
1633
|
+
patch?: never;
|
|
1634
|
+
trace?: never;
|
|
1635
|
+
};
|
|
1552
1636
|
"/workspaces/{workspaceId}/readiness/cursor-key-usage": {
|
|
1553
1637
|
parameters: {
|
|
1554
1638
|
query?: never;
|
|
@@ -1836,7 +1920,7 @@ export interface paths {
|
|
|
1836
1920
|
};
|
|
1837
1921
|
/**
|
|
1838
1922
|
* Workspace journey step completion
|
|
1839
|
-
* @description Returns the workspace-scoped journey progress state. Returns an empty `
|
|
1923
|
+
* @description Returns the workspace-scoped journey progress state. Returns an empty `completedStepIds` array when no row exists yet (updatedAt is synthetic in that case). Values are canonical step IDs (see `JourneyStepId`); legacy route strings are accepted on PUT and normalized. Covers issue #271.
|
|
1840
1924
|
*/
|
|
1841
1925
|
get: operations["getYourAiJourneyProgress"];
|
|
1842
1926
|
/**
|
|
@@ -2309,12 +2393,7 @@ export interface components {
|
|
|
2309
2393
|
/** @description Short label for the week column (MM/DD), aligned with Measure charts. */
|
|
2310
2394
|
weekLabel?: string;
|
|
2311
2395
|
mergedPrCount: number;
|
|
2312
|
-
/** @description DORA change failure rate (deployments/incidents), not CI build failures. */
|
|
2313
2396
|
failRatePercent: number;
|
|
2314
|
-
/** @description GitHub Actions / Checks CI build failure rate for the week bucket (failed runs / (failed + passed) * 100). Zero when GitHub Actions CI is disabled. */
|
|
2315
|
-
ciFailRatePercent?: number;
|
|
2316
|
-
/** @description Count of build.failed events in the week bucket when CI ingest is enabled. */
|
|
2317
|
-
ciBuildFailuresCount?: number;
|
|
2318
2397
|
/** @description Mean hours from PR creation to first review in this week bucket. */
|
|
2319
2398
|
avgReviewWaitHours?: number;
|
|
2320
2399
|
/** @description Mean hours from first review to first approval in this week bucket. */
|
|
@@ -2347,8 +2426,6 @@ export interface components {
|
|
|
2347
2426
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2348
2427
|
/** Format: date-time */
|
|
2349
2428
|
generatedAt: string;
|
|
2350
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2351
|
-
githubActionsCiEnabled?: boolean;
|
|
2352
2429
|
teams: components["schemas"]["ProductivityInsightsAggregatedTeamRowDto"][];
|
|
2353
2430
|
};
|
|
2354
2431
|
ProductivityInsightsMergedPrTrendWeekDto: {
|
|
@@ -2393,16 +2470,11 @@ export interface components {
|
|
|
2393
2470
|
periodAvgMergedPrs: number;
|
|
2394
2471
|
/** @description Average change failure rate over the range when available. */
|
|
2395
2472
|
avgFailRatePercent?: number;
|
|
2396
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2397
|
-
avgCiFailRatePercent?: number;
|
|
2398
2473
|
};
|
|
2399
2474
|
ProductivityInsightsTeamSummaryDto: {
|
|
2400
2475
|
totalMergedPrs: number;
|
|
2401
2476
|
avgMergedPrsPerWeek: number;
|
|
2402
|
-
/** @description Average DORA change failure rate over the range when available. */
|
|
2403
2477
|
avgFailRatePercent: number;
|
|
2404
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2405
|
-
avgCiFailRatePercent?: number;
|
|
2406
2478
|
headcount: number;
|
|
2407
2479
|
};
|
|
2408
2480
|
ProductivityInsightsTeamDetailDto: {
|
|
@@ -2429,8 +2501,6 @@ export interface components {
|
|
|
2429
2501
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2430
2502
|
/** Format: date-time */
|
|
2431
2503
|
generatedAt: string;
|
|
2432
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2433
|
-
githubActionsCiEnabled?: boolean;
|
|
2434
2504
|
/** @description Present when `teamId` query is omitted — top-ranked teams. */
|
|
2435
2505
|
items?: components["schemas"]["ProductivityInsightsTeamLeaderItemDto"][];
|
|
2436
2506
|
/** @description Present when `teamId` query is set — single-team drilldown. */
|
|
@@ -2478,16 +2548,11 @@ export interface components {
|
|
|
2478
2548
|
totalMergedPrs: number;
|
|
2479
2549
|
avgMergedPrsPerWeek: number;
|
|
2480
2550
|
totalAbsenceDays: number;
|
|
2481
|
-
/** @description Average DORA change failure rate over the range when available. */
|
|
2482
2551
|
avgFailRate: number;
|
|
2483
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2484
|
-
avgCiFailRate?: number;
|
|
2485
2552
|
mergedPrDelta: number;
|
|
2486
2553
|
avgMergedPrsPerWeekDelta: number;
|
|
2487
2554
|
totalAbsenceDaysDelta: number;
|
|
2488
2555
|
avgFailRateDelta: number;
|
|
2489
|
-
/** @description Change in average CI build failure rate vs the prior comparison window. */
|
|
2490
|
-
avgCiFailRateDelta?: number;
|
|
2491
2556
|
};
|
|
2492
2557
|
ProductivityInsightsContributorDetailDto: {
|
|
2493
2558
|
/** Format: uuid */
|
|
@@ -2499,8 +2564,6 @@ export interface components {
|
|
|
2499
2564
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2500
2565
|
/** Format: date-time */
|
|
2501
2566
|
generatedAt: string;
|
|
2502
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2503
|
-
githubActionsCiEnabled?: boolean;
|
|
2504
2567
|
contributor: components["schemas"]["ProductivityInsightsContributorProfileDto"];
|
|
2505
2568
|
weeks: components["schemas"]["ProductivityInsightsContributorActivityWeekDto"][];
|
|
2506
2569
|
summary: components["schemas"]["ProductivityInsightsContributorActivitySummaryDto"];
|
|
@@ -2519,8 +2582,6 @@ export interface components {
|
|
|
2519
2582
|
periodAvgMergedPrs: number;
|
|
2520
2583
|
/** @description Mean weekly change-failure rate when available. */
|
|
2521
2584
|
avgFailRatePercent?: number;
|
|
2522
|
-
/** @description Mean weekly GitHub Actions CI build failure rate when CI ingest is enabled. */
|
|
2523
|
-
avgCiFailRatePercent?: number;
|
|
2524
2585
|
};
|
|
2525
2586
|
ProductivityInsightsNeedsAttentionDto: {
|
|
2526
2587
|
/** Format: uuid */
|
|
@@ -2531,8 +2592,6 @@ export interface components {
|
|
|
2531
2592
|
entityType: "teams" | "contributors";
|
|
2532
2593
|
/** Format: date-time */
|
|
2533
2594
|
generatedAt: string;
|
|
2534
|
-
/** @description True when GitHub Actions CI ingest is enabled for this workspace. */
|
|
2535
|
-
githubActionsCiEnabled?: boolean;
|
|
2536
2595
|
items: components["schemas"]["ProductivityInsightsNeedsAttentionItemDto"][];
|
|
2537
2596
|
};
|
|
2538
2597
|
AiUsageSpendAggregatedTeamWeekDto: {
|
|
@@ -2801,6 +2860,83 @@ export interface components {
|
|
|
2801
2860
|
* @description Last push or metadata update from GitHub when available.
|
|
2802
2861
|
*/
|
|
2803
2862
|
updatedAt?: string | null;
|
|
2863
|
+
/** @description True when the repository is archived (read-only on GitHub). */
|
|
2864
|
+
archived?: boolean | null;
|
|
2865
|
+
/** @description True when the repository is a fork of another repository. */
|
|
2866
|
+
fork?: boolean | null;
|
|
2867
|
+
/** @description True when the repository is disabled on GitHub. */
|
|
2868
|
+
disabled?: boolean | null;
|
|
2869
|
+
/** @description Repository size in KB as reported by GitHub. */
|
|
2870
|
+
size?: number | null;
|
|
2871
|
+
/** @description Hard structural reasons this repo cannot be analyzed (archived, disabled, too-large, workspace repo cap). Each entry is a human-readable explanation (e.g. "This repo is archived"). Empty or absent means no hard block. Forks and unsupported-language repos are NOT listed here — they are advisory `warnings` (#729) and remain analyzable. */
|
|
2872
|
+
ineligibleReasons?: string[] | null;
|
|
2873
|
+
/** @description Non-blocking advisories shown alongside an otherwise-analyzable repo (#729). Includes forks ("results reflect the forked code") and repos with no v1-supported stack, where the message embeds the GitHub language mix in percent. Absent/empty when there are no warnings. Unlike `ineligibleReasons`, warnings do NOT disable analyze/score/fix actions. */
|
|
2874
|
+
warnings?: string[] | null;
|
|
2875
|
+
/**
|
|
2876
|
+
* @description Whether the repo can be analyzed (issue #44/#729). `ineligible` only for HARD structural gates (archived, disabled, too-large, workspace repo cap) — such repos render read-only in the AF list. A repo with no supported stack or that is a fork is `eligible` and carries a non-blocking `warnings` entry instead of being blocked.
|
|
2877
|
+
* @enum {string|null}
|
|
2878
|
+
*/
|
|
2879
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
2880
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repo is archived"). For advisory language/fork notices see `warnings`, not this field. */
|
|
2881
|
+
eligibilityReason?: string | null;
|
|
2882
|
+
/** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when no supported stack was detected. */
|
|
2883
|
+
primaryStack?: string | null;
|
|
2884
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
2885
|
+
secondaryStack?: string | null;
|
|
2886
|
+
/** @description All supported stacks detected for the repo (ordered, primary first). Empty/null when no supported stack is present. Drives multi-stack scanning and the orange mixed-monorepo box in the AF UI. */
|
|
2887
|
+
supportedStacks?: string[] | null;
|
|
2888
|
+
/** @description Per-language share of the repo from GitHub's `GET /repos/{owner}/{repo}/languages` byte counts, ordered by share descending (#729). Powers the "language mix" shown in the unsupported-stack warning. Absent/null until the repo has been synced with a language resolver. */
|
|
2889
|
+
languageBreakdown?: {
|
|
2890
|
+
/** @description GitHub language name (e.g. "TypeScript", "Go"). */
|
|
2891
|
+
language: string;
|
|
2892
|
+
/**
|
|
2893
|
+
* Format: float
|
|
2894
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153). The extra precision keeps small/near-tied languages distinguishable for a hover tag; render it rounded for compact labels. May not sum to exactly 100 due to rounding.
|
|
2895
|
+
*/
|
|
2896
|
+
percent: number;
|
|
2897
|
+
/** @description True when this language maps to a v1-supported stack; false when the language is not supported. Lets the UI flag exactly which languages are not (fully) supported in a mixed/monorepo. */
|
|
2898
|
+
supported: boolean;
|
|
2899
|
+
/** @description The supported stack this language maps to (backend_jvm | ios_app | web_spa | backend_go | backend_python), or null when the language is unsupported. */
|
|
2900
|
+
stack?: string | null;
|
|
2901
|
+
}[] | null;
|
|
2902
|
+
};
|
|
2903
|
+
/** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
|
|
2904
|
+
RepoEligibilityConfigDto: {
|
|
2905
|
+
/** @description Skip archived repos during GitHub repo sync. */
|
|
2906
|
+
excludeArchived: boolean;
|
|
2907
|
+
/** @description Skip forked repos. Forks are included by default. */
|
|
2908
|
+
excludeForks: boolean;
|
|
2909
|
+
/** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
|
|
2910
|
+
maxRepoSizeKb: number;
|
|
2911
|
+
/** @description Max repos materialized per workspace per sync. 0 = no limit. */
|
|
2912
|
+
maxReposPerWorkspace: number;
|
|
2913
|
+
};
|
|
2914
|
+
/** @description Per-workspace overrides for the repo-sync eligibility gate. Any field present wins over the global default; omit a field to inherit the default. An empty object clears all overrides. */
|
|
2915
|
+
RepoEligibilityOverridesDto: {
|
|
2916
|
+
excludeArchived?: boolean | null;
|
|
2917
|
+
excludeForks?: boolean | null;
|
|
2918
|
+
maxRepoSizeKb?: number | null;
|
|
2919
|
+
maxReposPerWorkspace?: number | null;
|
|
2920
|
+
};
|
|
2921
|
+
WorkspaceRepoEligibilityDto: {
|
|
2922
|
+
defaults: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2923
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
2924
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2925
|
+
/** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
|
|
2926
|
+
canEditUnrestricted: boolean;
|
|
2927
|
+
};
|
|
2928
|
+
/** @description Effective repo-eligibility limits applied to the GitHub repo list, plus the current count of eligible repos. Lets the UI render per-repo "size / limit" (compare each repo's `size` in `GithubInstalledRepoDto` to `maxRepoSizeKb`) and workspace "N / cap" usage (`eligibleRepoCount` / `maxReposPerWorkspace`). */
|
|
2929
|
+
RepoEligibilityLimitsDto: {
|
|
2930
|
+
/** @description Per-repo size cap in KB (GitHub-reported). 0 = no limit. */
|
|
2931
|
+
maxRepoSizeKb: number;
|
|
2932
|
+
/** @description Max repos that can be eligible per workspace. 0 = no limit. */
|
|
2933
|
+
maxReposPerWorkspace: number;
|
|
2934
|
+
/** @description Whether archived repos are treated as a hard block. */
|
|
2935
|
+
excludeArchived: boolean;
|
|
2936
|
+
/** @description Whether forked repos are excluded by the sync gate (forks are a warning, not a block). */
|
|
2937
|
+
excludeForks: boolean;
|
|
2938
|
+
/** @description Repos currently counting as eligible (eligibilityStatus != "ineligible"), i.e. those that count toward `maxReposPerWorkspace`. */
|
|
2939
|
+
eligibleRepoCount: number;
|
|
2804
2940
|
};
|
|
2805
2941
|
GithubMissingPermissionDto: {
|
|
2806
2942
|
/** @description GitHub App permission key (e.g. contents, pull_requests). */
|
|
@@ -2889,6 +3025,8 @@ export interface components {
|
|
|
2889
3025
|
account?: components["schemas"]["GithubAccountDto"] | null;
|
|
2890
3026
|
/** @description Paginated merged installation repositories when `installed` is true. */
|
|
2891
3027
|
repos?: components["schemas"]["GithubInstalledRepoListDto"] | null;
|
|
3028
|
+
/** @description Effective size/count limits and current eligible-repo usage for the repo list. Present when `installed` is true. Pair with each repo's `size` and `eligibilityStatus` to show "size / limit" and "N / cap" in the UI. */
|
|
3029
|
+
eligibilityLimits?: components["schemas"]["RepoEligibilityLimitsDto"] | null;
|
|
2892
3030
|
/**
|
|
2893
3031
|
* Format: uri
|
|
2894
3032
|
* @description User accounts: github.com/settings/installations/<id>. Organizations: github.com/organizations/<login>/settings/installations/<id>.
|
|
@@ -3199,7 +3337,7 @@ export interface components {
|
|
|
3199
3337
|
scorePercent?: number;
|
|
3200
3338
|
/** @description Per-criterion status counts from the latest successful scan */
|
|
3201
3339
|
criteriaSummary?: components["schemas"]["ReadinessCriteriaSummaryDto"] | null;
|
|
3202
|
-
/** @description Individual rubric criterion outcomes from the latest successful scan. Always present on the single-repo detail endpoint
|
|
3340
|
+
/** @description Individual rubric criterion outcomes from the latest successful scan. Always present on the single-repo detail endpoint; empty array when no scan has completed yet for this dimension. */
|
|
3203
3341
|
criteriaDetails: components["schemas"]["CriterionDetailDto"][];
|
|
3204
3342
|
issues: components["schemas"]["ReadinessIssueDto"][];
|
|
3205
3343
|
};
|
|
@@ -3293,6 +3431,34 @@ export interface components {
|
|
|
3293
3431
|
* @enum {string|null}
|
|
3294
3432
|
*/
|
|
3295
3433
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3434
|
+
/**
|
|
3435
|
+
* @description Whether the repo can be analyzed (#44/#729). Language support no longer makes a repo `ineligible` — a missing v1-supported stack is surfaced via `warnings` and the repo stays analyzable. It becomes `ineligible` when the most recent scan hit a hard size/file-count limit (e.g. code-size or file-count exceeded): the repo is then restricted here too so this surface matches the GitHub connect list's size gate after the scan. Null until the first sync/scan computes it.
|
|
3436
|
+
* @enum {string|null}
|
|
3437
|
+
*/
|
|
3438
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
3439
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. the size / file-count limit message from the last scan). For advisory language notices see `warnings`. */
|
|
3440
|
+
eligibilityReason?: string | null;
|
|
3441
|
+
/** @description Non-blocking advisories for an analyzable repo (#729): no v1-supported stack (with the language mix), and hard-limit run outcomes (code size / file count exceeded) carried from the last run. Absent/empty when there are no warnings. */
|
|
3442
|
+
warnings?: string[] | null;
|
|
3443
|
+
/** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when no supported stack/uncomputed. */
|
|
3444
|
+
primaryStack?: string | null;
|
|
3445
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
3446
|
+
secondaryStack?: string | null;
|
|
3447
|
+
/** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
|
|
3448
|
+
supportedStacks?: string[] | null;
|
|
3449
|
+
/** @description Per-language share from GitHub languages (#729), ordered by share descending. Each entry has `supported`/`stack` so the UI can tag which languages are (not) supported. Absent until the repo has been synced with a language resolver. */
|
|
3450
|
+
languageBreakdown?: {
|
|
3451
|
+
language: string;
|
|
3452
|
+
/**
|
|
3453
|
+
* Format: float
|
|
3454
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3455
|
+
*/
|
|
3456
|
+
percent: number;
|
|
3457
|
+
supported: boolean;
|
|
3458
|
+
stack?: string | null;
|
|
3459
|
+
}[] | null;
|
|
3460
|
+
/** @description GitHub-reported repository size in KB (includes git history), refreshed on each readiness scan (#729). Compare against `eligibilityLimits.maxRepoSizeKb` on the list response to show per-repo "size / limit". When the size exceeds the limit the latest scan is recorded as `partial_failed` with `lastRunErrorCode = exceeded_repo_size_limit` and the repo is marked `ineligible`. Null until a scan has populated it. */
|
|
3461
|
+
sizeKb?: number | null;
|
|
3296
3462
|
};
|
|
3297
3463
|
/** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
|
|
3298
3464
|
RepoReadinessScoreDetailDto: {
|
|
@@ -3320,6 +3486,30 @@ export interface components {
|
|
|
3320
3486
|
archivedAt?: string | null;
|
|
3321
3487
|
/** @enum {string|null} */
|
|
3322
3488
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3489
|
+
/**
|
|
3490
|
+
* @description See RepoReadinessScoreDto.eligibilityStatus. Language support is advisory (#729) and surfaced via `warnings`.
|
|
3491
|
+
* @enum {string|null}
|
|
3492
|
+
*/
|
|
3493
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
3494
|
+
eligibilityReason?: string | null;
|
|
3495
|
+
/** @description Non-blocking advisories (no v1-supported stack, hard-limit run outcomes). See RepoReadinessScoreDto.warnings. */
|
|
3496
|
+
warnings?: string[] | null;
|
|
3497
|
+
primaryStack?: string | null;
|
|
3498
|
+
secondaryStack?: string | null;
|
|
3499
|
+
supportedStacks?: string[] | null;
|
|
3500
|
+
/** @description Per-language share with `supported`/`stack` tags. See RepoReadinessScoreDto.languageBreakdown. */
|
|
3501
|
+
languageBreakdown?: {
|
|
3502
|
+
language: string;
|
|
3503
|
+
/**
|
|
3504
|
+
* Format: float
|
|
3505
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3506
|
+
*/
|
|
3507
|
+
percent: number;
|
|
3508
|
+
supported: boolean;
|
|
3509
|
+
stack?: string | null;
|
|
3510
|
+
}[] | null;
|
|
3511
|
+
/** @description GitHub-reported repository size in KB, refreshed on each scan. See RepoReadinessScoreDto.sizeKb. */
|
|
3512
|
+
sizeKb?: number | null;
|
|
3323
3513
|
};
|
|
3324
3514
|
AgenticFoundationDashboardSummaryDto: {
|
|
3325
3515
|
repoCount: number;
|
|
@@ -3344,8 +3534,20 @@ export interface components {
|
|
|
3344
3534
|
limit: number;
|
|
3345
3535
|
offset: number;
|
|
3346
3536
|
};
|
|
3537
|
+
/** @description Effective size/code limits enforced by readiness scans (#729). Lets the UI render per-repo "size / limit" (compare each repo's `sizeKb` to `maxRepoSizeKb`) and explain why a repo is `ineligible` due to a hard size/file-count limit. A repo over `maxRepoSizeKb` is skipped on the next scan (recorded `partial_failed` with `exceeded_repo_size_limit`); code-line/file counts are evaluated post-clone via `cloc`. */
|
|
3538
|
+
ReadinessEligibilityLimitsDto: {
|
|
3539
|
+
/** @description Per-repo GitHub size cap in KB (includes git history). 0 = no limit. */
|
|
3540
|
+
maxRepoSizeKb: number;
|
|
3541
|
+
/** @description Max total lines of code (cloc) before a scan is skipped. 0 = no limit. */
|
|
3542
|
+
maxLinesOfCode: number;
|
|
3543
|
+
/** @description Max source file count (cloc) before a scan is skipped. 0 = no limit. */
|
|
3544
|
+
maxFileCount: number;
|
|
3545
|
+
/** @description Max repos that can be eligible per workspace. 0 = no limit. */
|
|
3546
|
+
maxReposPerWorkspace: number;
|
|
3547
|
+
};
|
|
3347
3548
|
ReadinessRepoListDto: components["schemas"]["PageMetaDto"] & {
|
|
3348
3549
|
items: components["schemas"]["RepoReadinessScoreDto"][];
|
|
3550
|
+
eligibilityLimits?: components["schemas"]["ReadinessEligibilityLimitsDto"];
|
|
3349
3551
|
};
|
|
3350
3552
|
/** @description Paginated list of repo readiness scores where each dimension includes criteriaDetails. Used by dimension-slice endpoints (agentic-foundation pillars). */
|
|
3351
3553
|
ReadinessRepoDetailListDto: components["schemas"]["PageMetaDto"] & {
|
|
@@ -3580,14 +3782,31 @@ export interface components {
|
|
|
3580
3782
|
AiStrategyPlanDto: {
|
|
3581
3783
|
phases: components["schemas"]["AiStrategyPhaseBlockDto"][];
|
|
3582
3784
|
};
|
|
3785
|
+
/**
|
|
3786
|
+
* @description Canonical journey step identifier (stable across URL reshuffles).
|
|
3787
|
+
* @enum {string}
|
|
3788
|
+
*/
|
|
3789
|
+
JourneyStepId: "onboarding.workspace" | "onboarding.ai_readiness" | "onboarding.integrations" | "readiness.dashboard" | "readiness.fix_queue" | "readiness.activity" | "insights.productivity" | "insights.productivity.by_user" | "insights.productivity.by_team" | "insights.ai_usage" | "insights.ai_usage.by_user" | "insights.ai_usage.by_team" | "insights.ai_usage.by_model";
|
|
3583
3790
|
JourneyProgressDto: {
|
|
3584
|
-
|
|
3791
|
+
/** @description Canonical completed journey step IDs. */
|
|
3792
|
+
completedStepIds: components["schemas"]["JourneyStepId"][];
|
|
3793
|
+
/**
|
|
3794
|
+
* @deprecated
|
|
3795
|
+
* @description Deprecated alias of completedStepIds (legacy clients). Omitted on new responses when empty.
|
|
3796
|
+
*/
|
|
3797
|
+
completedSteps?: string[];
|
|
3585
3798
|
/** Format: date-time */
|
|
3586
3799
|
updatedAt: string;
|
|
3587
3800
|
};
|
|
3588
3801
|
JourneyProgressUpdateDto: {
|
|
3589
|
-
|
|
3590
|
-
|
|
3802
|
+
/** @description Idempotent replace-all of completed step IDs. */
|
|
3803
|
+
completedStepIds?: components["schemas"]["JourneyStepId"][];
|
|
3804
|
+
/**
|
|
3805
|
+
* @deprecated
|
|
3806
|
+
* @description Deprecated input alias — route strings and legacy `/phase-*` paths are normalized to step IDs.
|
|
3807
|
+
*/
|
|
3808
|
+
completedSteps?: string[];
|
|
3809
|
+
} | unknown | unknown;
|
|
3591
3810
|
/** @enum {string} */
|
|
3592
3811
|
ThemePreference: "light" | "dark" | "system";
|
|
3593
3812
|
NotificationPreferencesDto: {
|
|
@@ -3709,7 +3928,9 @@ export interface components {
|
|
|
3709
3928
|
/** Format: date-time */
|
|
3710
3929
|
windowEnd: string;
|
|
3711
3930
|
journey: {
|
|
3712
|
-
|
|
3931
|
+
completedStepIds: components["schemas"]["JourneyStepId"][];
|
|
3932
|
+
/** @deprecated */
|
|
3933
|
+
completedSteps?: string[];
|
|
3713
3934
|
/** Format: date-time */
|
|
3714
3935
|
updatedAt: string | null;
|
|
3715
3936
|
};
|
|
@@ -3782,7 +4003,7 @@ export interface components {
|
|
|
3782
4003
|
* @description Type of workspace lifecycle event.
|
|
3783
4004
|
* @enum {string}
|
|
3784
4005
|
*/
|
|
3785
|
-
ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "
|
|
4006
|
+
ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
|
|
3786
4007
|
ActivityLogActorDto: {
|
|
3787
4008
|
/** Format: uuid */
|
|
3788
4009
|
userId: string;
|
|
@@ -4032,6 +4253,8 @@ export interface components {
|
|
|
4032
4253
|
parameters: {
|
|
4033
4254
|
WorkspaceId: string;
|
|
4034
4255
|
RepoId: string;
|
|
4256
|
+
/** @description Provider repository slug in `owner/repo` form (GitHub). Used for shareable public URLs; resolves to the same row as `repoId` UUID internally. */
|
|
4257
|
+
ProviderSlug: string;
|
|
4035
4258
|
ProjectId: string;
|
|
4036
4259
|
NotificationId: string;
|
|
4037
4260
|
/** @description Workspace member user id (`tai_users.id`). */
|
|
@@ -4153,6 +4376,10 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
|
|
|
4153
4376
|
export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
|
|
4154
4377
|
export type GithubAccountDto = components['schemas']['GithubAccountDto'];
|
|
4155
4378
|
export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
|
|
4379
|
+
export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
|
|
4380
|
+
export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
|
|
4381
|
+
export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
|
|
4382
|
+
export type RepoEligibilityLimitsDto = components['schemas']['RepoEligibilityLimitsDto'];
|
|
4156
4383
|
export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
|
|
4157
4384
|
export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
|
|
4158
4385
|
export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
|
|
@@ -4205,6 +4432,7 @@ export type RepoReadinessScoreDto = components['schemas']['RepoReadinessScoreDto
|
|
|
4205
4432
|
export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
|
|
4206
4433
|
export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
|
|
4207
4434
|
export type PageMetaDto = components['schemas']['PageMetaDto'];
|
|
4435
|
+
export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
|
|
4208
4436
|
export type ReadinessRepoListDto = components['schemas']['ReadinessRepoListDto'];
|
|
4209
4437
|
export type ReadinessRepoDetailListDto = components['schemas']['ReadinessRepoDetailListDto'];
|
|
4210
4438
|
export type ReadinessFixListDto = components['schemas']['ReadinessFixListDto'];
|
|
@@ -4236,6 +4464,7 @@ export type AiStrategyRecommendBodyDto = components['schemas']['AiStrategyRecomm
|
|
|
4236
4464
|
export type AiStrategyTaskRecommendationDto = components['schemas']['AiStrategyTaskRecommendationDto'];
|
|
4237
4465
|
export type AiStrategyPhaseBlockDto = components['schemas']['AiStrategyPhaseBlockDto'];
|
|
4238
4466
|
export type AiStrategyPlanDto = components['schemas']['AiStrategyPlanDto'];
|
|
4467
|
+
export type JourneyStepId = components['schemas']['JourneyStepId'];
|
|
4239
4468
|
export type JourneyProgressDto = components['schemas']['JourneyProgressDto'];
|
|
4240
4469
|
export type JourneyProgressUpdateDto = components['schemas']['JourneyProgressUpdateDto'];
|
|
4241
4470
|
export type ThemePreference = components['schemas']['ThemePreference'];
|
|
@@ -4273,6 +4502,7 @@ export type ResponseUnauthorized = components['responses']['Unauthorized'];
|
|
|
4273
4502
|
export type ResponseForbidden = components['responses']['Forbidden'];
|
|
4274
4503
|
export type ParameterWorkspaceId = components['parameters']['WorkspaceId'];
|
|
4275
4504
|
export type ParameterRepoId = components['parameters']['RepoId'];
|
|
4505
|
+
export type ParameterProviderSlug = components['parameters']['ProviderSlug'];
|
|
4276
4506
|
export type ParameterProjectId = components['parameters']['ProjectId'];
|
|
4277
4507
|
export type ParameterNotificationId = components['parameters']['NotificationId'];
|
|
4278
4508
|
export type ParameterWorkspaceMemberId = components['parameters']['WorkspaceMemberId'];
|
|
@@ -5322,7 +5552,7 @@ export interface operations {
|
|
|
5322
5552
|
header?: never;
|
|
5323
5553
|
path: {
|
|
5324
5554
|
workspaceId: components["parameters"]["WorkspaceId"];
|
|
5325
|
-
/** @description
|
|
5555
|
+
/** @description GitHub login slug, org-chart person id, or synthetic `__github:{login}` scope id. */
|
|
5326
5556
|
contributorId: string;
|
|
5327
5557
|
};
|
|
5328
5558
|
cookie?: never;
|
|
@@ -7131,6 +7361,50 @@ export interface operations {
|
|
|
7131
7361
|
};
|
|
7132
7362
|
};
|
|
7133
7363
|
};
|
|
7364
|
+
getReadinessRepoBySlug: {
|
|
7365
|
+
parameters: {
|
|
7366
|
+
query?: never;
|
|
7367
|
+
header?: never;
|
|
7368
|
+
path: {
|
|
7369
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
7370
|
+
/** @description Provider repository slug in `owner/repo` form (GitHub). Used for shareable public URLs; resolves to the same row as `repoId` UUID internally. */
|
|
7371
|
+
providerSlug: components["parameters"]["ProviderSlug"];
|
|
7372
|
+
};
|
|
7373
|
+
cookie?: never;
|
|
7374
|
+
};
|
|
7375
|
+
requestBody?: never;
|
|
7376
|
+
responses: {
|
|
7377
|
+
/** @description Repo score */
|
|
7378
|
+
200: {
|
|
7379
|
+
headers: {
|
|
7380
|
+
[name: string]: unknown;
|
|
7381
|
+
};
|
|
7382
|
+
content: {
|
|
7383
|
+
"application/json": components["schemas"]["RepoReadinessScoreDetailDto"];
|
|
7384
|
+
};
|
|
7385
|
+
};
|
|
7386
|
+
/** @description Malformed providerSlug */
|
|
7387
|
+
400: {
|
|
7388
|
+
headers: {
|
|
7389
|
+
[name: string]: unknown;
|
|
7390
|
+
};
|
|
7391
|
+
content: {
|
|
7392
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7393
|
+
};
|
|
7394
|
+
};
|
|
7395
|
+
401: components["responses"]["Unauthorized"];
|
|
7396
|
+
403: components["responses"]["Forbidden"];
|
|
7397
|
+
/** @description Workspace or repository not found */
|
|
7398
|
+
404: {
|
|
7399
|
+
headers: {
|
|
7400
|
+
[name: string]: unknown;
|
|
7401
|
+
};
|
|
7402
|
+
content: {
|
|
7403
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7404
|
+
};
|
|
7405
|
+
};
|
|
7406
|
+
};
|
|
7407
|
+
};
|
|
7134
7408
|
getReadinessRepo: {
|
|
7135
7409
|
parameters: {
|
|
7136
7410
|
query?: never;
|
|
@@ -7342,6 +7616,10 @@ export interface operations {
|
|
|
7342
7616
|
offset?: components["parameters"]["PaginationOffset"];
|
|
7343
7617
|
/** @description Sort direction. */
|
|
7344
7618
|
order?: components["parameters"]["PaginationOrder"];
|
|
7619
|
+
/** @description Server-side sort column (the activity "5 W's"). Combined with `order` (asc/desc). Defaults to `when` (occurredAt). `occurredAt`/`id` is always the tiebreaker. */
|
|
7620
|
+
sort?: "when" | "who" | "what" | "why" | "where";
|
|
7621
|
+
/** @description Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events; `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS; `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area. */
|
|
7622
|
+
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
|
|
7345
7623
|
/** @description Filter to a specific event type. */
|
|
7346
7624
|
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|
|
7347
7625
|
/** @description Filter to events performed by a specific user (UUID). */
|
|
@@ -7352,6 +7630,8 @@ export interface operations {
|
|
|
7352
7630
|
until?: string;
|
|
7353
7631
|
/** @description Filter by event namespace prefix (e.g. "fix", "repo", "integration", "readiness", "config", "member"). */
|
|
7354
7632
|
eventCategory?: string;
|
|
7633
|
+
/** @description Filter by a dotted event-type *subgroup* (#156): a strict prefix of an event type with one or more segments (shorter than the full event type), matching every lifecycle event under it in a single call. Single-segment values (e.g. `fix`, `readiness`, `repo`, `productivity`) overlap with `eventCategory` so the same control can filter at any depth. Example: `integrations.cursor.execution_key` returns `integrations.cursor.execution_key.added`, `.updated`, `.removed`, and `.check_failed`; `integrations.cursor` returns all Cursor key events; `fix` returns all fix lifecycle events. Must be one of the known subcategories or the request is rejected (400). */
|
|
7634
|
+
eventSubcategory?: string;
|
|
7355
7635
|
/** @description Case-insensitive substring filter applied across repo name, integration type, actor email, and actor display name. */
|
|
7356
7636
|
search?: string;
|
|
7357
7637
|
};
|
|
@@ -7394,6 +7674,61 @@ export interface operations {
|
|
|
7394
7674
|
};
|
|
7395
7675
|
};
|
|
7396
7676
|
};
|
|
7677
|
+
exportWorkspaceActivity: {
|
|
7678
|
+
parameters: {
|
|
7679
|
+
query?: {
|
|
7680
|
+
sort?: "when" | "who" | "what" | "why" | "where";
|
|
7681
|
+
/** @description Sort direction. */
|
|
7682
|
+
order?: components["parameters"]["PaginationOrder"];
|
|
7683
|
+
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
|
|
7684
|
+
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|
|
7685
|
+
eventCategory?: string;
|
|
7686
|
+
/** @description Dotted event-type subgroup prefix (see the activity list endpoint). */
|
|
7687
|
+
eventSubcategory?: string;
|
|
7688
|
+
actorUserId?: string;
|
|
7689
|
+
since?: string;
|
|
7690
|
+
until?: string;
|
|
7691
|
+
search?: string;
|
|
7692
|
+
};
|
|
7693
|
+
header?: never;
|
|
7694
|
+
path: {
|
|
7695
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
7696
|
+
};
|
|
7697
|
+
cookie?: never;
|
|
7698
|
+
};
|
|
7699
|
+
requestBody?: never;
|
|
7700
|
+
responses: {
|
|
7701
|
+
/** @description CSV file of activity log entries */
|
|
7702
|
+
200: {
|
|
7703
|
+
headers: {
|
|
7704
|
+
[name: string]: unknown;
|
|
7705
|
+
};
|
|
7706
|
+
content: {
|
|
7707
|
+
"text/csv": string;
|
|
7708
|
+
};
|
|
7709
|
+
};
|
|
7710
|
+
/** @description Invalid query parameters */
|
|
7711
|
+
400: {
|
|
7712
|
+
headers: {
|
|
7713
|
+
[name: string]: unknown;
|
|
7714
|
+
};
|
|
7715
|
+
content: {
|
|
7716
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7717
|
+
};
|
|
7718
|
+
};
|
|
7719
|
+
401: components["responses"]["Unauthorized"];
|
|
7720
|
+
403: components["responses"]["Forbidden"];
|
|
7721
|
+
/** @description Workspace does not exist */
|
|
7722
|
+
404: {
|
|
7723
|
+
headers: {
|
|
7724
|
+
[name: string]: unknown;
|
|
7725
|
+
};
|
|
7726
|
+
content: {
|
|
7727
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7728
|
+
};
|
|
7729
|
+
};
|
|
7730
|
+
};
|
|
7731
|
+
};
|
|
7397
7732
|
getReadinessScoreHistory: {
|
|
7398
7733
|
parameters: {
|
|
7399
7734
|
query?: {
|
|
@@ -8285,6 +8620,124 @@ export interface operations {
|
|
|
8285
8620
|
403: components["responses"]["Forbidden"];
|
|
8286
8621
|
};
|
|
8287
8622
|
};
|
|
8623
|
+
getWorkspaceRepoEligibility: {
|
|
8624
|
+
parameters: {
|
|
8625
|
+
query?: never;
|
|
8626
|
+
header?: never;
|
|
8627
|
+
path: {
|
|
8628
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8629
|
+
};
|
|
8630
|
+
cookie?: never;
|
|
8631
|
+
};
|
|
8632
|
+
requestBody?: never;
|
|
8633
|
+
responses: {
|
|
8634
|
+
/** @description Effective repo-eligibility configuration */
|
|
8635
|
+
200: {
|
|
8636
|
+
headers: {
|
|
8637
|
+
[name: string]: unknown;
|
|
8638
|
+
};
|
|
8639
|
+
content: {
|
|
8640
|
+
"application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
|
|
8641
|
+
};
|
|
8642
|
+
};
|
|
8643
|
+
401: components["responses"]["Unauthorized"];
|
|
8644
|
+
403: components["responses"]["Forbidden"];
|
|
8645
|
+
};
|
|
8646
|
+
};
|
|
8647
|
+
putWorkspaceRepoEligibility: {
|
|
8648
|
+
parameters: {
|
|
8649
|
+
query?: never;
|
|
8650
|
+
header?: never;
|
|
8651
|
+
path: {
|
|
8652
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8653
|
+
};
|
|
8654
|
+
cookie?: never;
|
|
8655
|
+
};
|
|
8656
|
+
requestBody: {
|
|
8657
|
+
content: {
|
|
8658
|
+
"application/json": {
|
|
8659
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8660
|
+
};
|
|
8661
|
+
};
|
|
8662
|
+
};
|
|
8663
|
+
responses: {
|
|
8664
|
+
/** @description Overrides saved */
|
|
8665
|
+
200: {
|
|
8666
|
+
headers: {
|
|
8667
|
+
[name: string]: unknown;
|
|
8668
|
+
};
|
|
8669
|
+
content: {
|
|
8670
|
+
"application/json": {
|
|
8671
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8672
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
8673
|
+
};
|
|
8674
|
+
};
|
|
8675
|
+
};
|
|
8676
|
+
/** @description Invalid request body */
|
|
8677
|
+
400: {
|
|
8678
|
+
headers: {
|
|
8679
|
+
[name: string]: unknown;
|
|
8680
|
+
};
|
|
8681
|
+
content: {
|
|
8682
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8683
|
+
};
|
|
8684
|
+
};
|
|
8685
|
+
401: components["responses"]["Unauthorized"];
|
|
8686
|
+
/** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
|
|
8687
|
+
403: {
|
|
8688
|
+
headers: {
|
|
8689
|
+
[name: string]: unknown;
|
|
8690
|
+
};
|
|
8691
|
+
content: {
|
|
8692
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8693
|
+
};
|
|
8694
|
+
};
|
|
8695
|
+
};
|
|
8696
|
+
};
|
|
8697
|
+
refreshWorkspaceRepoLanguages: {
|
|
8698
|
+
parameters: {
|
|
8699
|
+
query?: never;
|
|
8700
|
+
header?: never;
|
|
8701
|
+
path: {
|
|
8702
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8703
|
+
};
|
|
8704
|
+
cookie?: never;
|
|
8705
|
+
};
|
|
8706
|
+
requestBody?: {
|
|
8707
|
+
content: {
|
|
8708
|
+
"application/json": {
|
|
8709
|
+
/** @description Optional `owner/name` to scope the refresh to a single repo. Omit to reset all repos. */
|
|
8710
|
+
repoSlug?: string;
|
|
8711
|
+
};
|
|
8712
|
+
};
|
|
8713
|
+
};
|
|
8714
|
+
responses: {
|
|
8715
|
+
/** @description Freshness invalidated; languages will be re-detected on the next sync. */
|
|
8716
|
+
200: {
|
|
8717
|
+
headers: {
|
|
8718
|
+
[name: string]: unknown;
|
|
8719
|
+
};
|
|
8720
|
+
content: {
|
|
8721
|
+
"application/json": {
|
|
8722
|
+
ok: boolean;
|
|
8723
|
+
/** @description Number of repo rows whose language/stack cache was invalidated. */
|
|
8724
|
+
reposReset: number;
|
|
8725
|
+
};
|
|
8726
|
+
};
|
|
8727
|
+
};
|
|
8728
|
+
/** @description Invalid request body */
|
|
8729
|
+
400: {
|
|
8730
|
+
headers: {
|
|
8731
|
+
[name: string]: unknown;
|
|
8732
|
+
};
|
|
8733
|
+
content: {
|
|
8734
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8735
|
+
};
|
|
8736
|
+
};
|
|
8737
|
+
401: components["responses"]["Unauthorized"];
|
|
8738
|
+
403: components["responses"]["Forbidden"];
|
|
8739
|
+
};
|
|
8740
|
+
};
|
|
8288
8741
|
getCursorKeyUsage: {
|
|
8289
8742
|
parameters: {
|
|
8290
8743
|
query?: never;
|
|
@@ -8542,7 +8995,7 @@ export interface operations {
|
|
|
8542
8995
|
};
|
|
8543
8996
|
requestBody?: never;
|
|
8544
8997
|
responses: {
|
|
8545
|
-
/** @description Progress (empty
|
|
8998
|
+
/** @description Progress (empty completedStepIds when no row exists yet; updatedAt is synthetic in that case) */
|
|
8546
8999
|
200: {
|
|
8547
9000
|
headers: {
|
|
8548
9001
|
[name: string]: unknown;
|