@thinkai/tai-api-contract 2.6.0 → 2.7.1
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 +478 -58
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +490 -122
- package/package.json +1 -1
- package/src/generated/openapi.ts +478 -58
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.7.1
|
|
5
5
|
description: >
|
|
6
6
|
Contract surface for the AI Driven SDLC backend used by ThinkAI.
|
|
7
7
|
Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
|
|
@@ -52,8 +52,69 @@ tags:
|
|
|
52
52
|
description: Agentic Foundation pillars (epic #278); reads stored repository readiness snapshots
|
|
53
53
|
- name: YourAiJourney
|
|
54
54
|
description: Your AI Journey dashboard aggregators (epic #267); composes readiness, metrics, and AI-spend data for the /dashboard page
|
|
55
|
+
- name: PlatformAdmin
|
|
56
|
+
description: Platform-admin operations restricted to PLATFORM_ADMIN_EMAILS. Callers must present a valid JWT from an email on that allowlist; all other callers receive 403.
|
|
55
57
|
|
|
56
58
|
paths:
|
|
59
|
+
/admin/users/{userId}:
|
|
60
|
+
delete:
|
|
61
|
+
tags: [PlatformAdmin]
|
|
62
|
+
summary: Delete user and all workspace data
|
|
63
|
+
operationId: adminDeleteUser
|
|
64
|
+
description: >
|
|
65
|
+
Hard-deletes a user account and all data they own in a single atomic transaction:
|
|
66
|
+
owned workspaces (and all workspace-level child tables via CASCADE), membership rows in
|
|
67
|
+
other workspaces, invitations where the user is `invited_by`, and the user row itself.
|
|
68
|
+
After the DB commit, removes the corresponding Supabase Auth user via the service-role key;
|
|
69
|
+
Auth deletion failure is logged but does not roll back the DB changes.
|
|
70
|
+
|
|
71
|
+
**Authorization:** Bearer JWT required. Caller email must appear in `PLATFORM_ADMIN_EMAILS`
|
|
72
|
+
(comma-separated env var). All other callers receive `403 Forbidden`.
|
|
73
|
+
parameters:
|
|
74
|
+
- name: userId
|
|
75
|
+
in: path
|
|
76
|
+
required: true
|
|
77
|
+
schema:
|
|
78
|
+
type: string
|
|
79
|
+
format: uuid
|
|
80
|
+
description: "`tai_users.id` of the account to delete."
|
|
81
|
+
responses:
|
|
82
|
+
"204":
|
|
83
|
+
description: User and all workspace data deleted.
|
|
84
|
+
"400":
|
|
85
|
+
description: Invalid UUID format.
|
|
86
|
+
content:
|
|
87
|
+
application/json:
|
|
88
|
+
schema:
|
|
89
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
90
|
+
example:
|
|
91
|
+
error: Invalid user ID format
|
|
92
|
+
code: invalid_user_id
|
|
93
|
+
"401":
|
|
94
|
+
description: Missing or invalid JWT.
|
|
95
|
+
content:
|
|
96
|
+
application/json:
|
|
97
|
+
schema:
|
|
98
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
99
|
+
"403":
|
|
100
|
+
description: Caller is not a platform admin.
|
|
101
|
+
content:
|
|
102
|
+
application/json:
|
|
103
|
+
schema:
|
|
104
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
105
|
+
example:
|
|
106
|
+
error: Forbidden
|
|
107
|
+
code: forbidden
|
|
108
|
+
"404":
|
|
109
|
+
description: User not found.
|
|
110
|
+
content:
|
|
111
|
+
application/json:
|
|
112
|
+
schema:
|
|
113
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
114
|
+
example:
|
|
115
|
+
error: User not found
|
|
116
|
+
code: user_not_found
|
|
117
|
+
|
|
57
118
|
/me:
|
|
58
119
|
get:
|
|
59
120
|
tags: [Me]
|
|
@@ -1505,6 +1566,10 @@ paths:
|
|
|
1505
1566
|
schema:
|
|
1506
1567
|
type: boolean
|
|
1507
1568
|
default: false
|
|
1569
|
+
- $ref: "#/components/parameters/GithubRepoLimit"
|
|
1570
|
+
- $ref: "#/components/parameters/GithubRepoOffset"
|
|
1571
|
+
- $ref: "#/components/parameters/GithubRepoSort"
|
|
1572
|
+
- $ref: "#/components/parameters/GithubRepoOrder"
|
|
1508
1573
|
responses:
|
|
1509
1574
|
"200":
|
|
1510
1575
|
description: Installation status
|
|
@@ -2122,19 +2187,33 @@ paths:
|
|
|
2122
2187
|
/workspaces/{workspaceId}/readiness/repos:
|
|
2123
2188
|
get:
|
|
2124
2189
|
tags: [RepositoryReadiness]
|
|
2125
|
-
summary: List repo readiness scores
|
|
2190
|
+
summary: List repo readiness scores (paginated)
|
|
2126
2191
|
operationId: listReadinessRepos
|
|
2192
|
+
description: >
|
|
2193
|
+
Returns a page of repository readiness scorecards. Use `GET .../readiness/repos/{repoId}`
|
|
2194
|
+
for a single repo. Summary aggregates on the Agentic Foundation dashboard use separate
|
|
2195
|
+
aggregate queries over the full workspace (#403).
|
|
2127
2196
|
parameters:
|
|
2128
2197
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2198
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2199
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2200
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2201
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2202
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2203
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2129
2204
|
responses:
|
|
2130
2205
|
"200":
|
|
2131
|
-
description:
|
|
2206
|
+
description: Paginated repositories analyzed
|
|
2132
2207
|
content:
|
|
2133
2208
|
application/json:
|
|
2134
2209
|
schema:
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2210
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2211
|
+
"400":
|
|
2212
|
+
description: Invalid pagination or sort query
|
|
2213
|
+
content:
|
|
2214
|
+
application/json:
|
|
2215
|
+
schema:
|
|
2216
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2138
2217
|
"401":
|
|
2139
2218
|
$ref: "#/components/responses/Unauthorized"
|
|
2140
2219
|
"403":
|
|
@@ -2269,18 +2348,19 @@ paths:
|
|
|
2269
2348
|
/workspaces/{workspaceId}/agentic-foundation/dashboard:
|
|
2270
2349
|
get:
|
|
2271
2350
|
tags: [AgenticFoundation]
|
|
2272
|
-
summary: Agentic Foundation dashboard
|
|
2351
|
+
summary: Agentic Foundation dashboard summary
|
|
2273
2352
|
description: >
|
|
2274
|
-
Returns
|
|
2275
|
-
Agentic Foundation dashboard surfaces.
|
|
2276
|
-
|
|
2277
|
-
|
|
2353
|
+
Returns workspace-level readiness summary, per-dimension aggregate bars, and fix status
|
|
2354
|
+
counts for Agentic Foundation dashboard surfaces. Repository and issue lists are paginated
|
|
2355
|
+
on `GET .../readiness/repos` and related segment routes (#403). Read-only; does not run
|
|
2356
|
+
scoring on the request path (issue #279). Field `generatedAt` is the server timestamp when
|
|
2357
|
+
this JSON payload was assembled.
|
|
2278
2358
|
operationId: getAgenticFoundationDashboard
|
|
2279
2359
|
parameters:
|
|
2280
2360
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2281
2361
|
responses:
|
|
2282
2362
|
"200":
|
|
2283
|
-
description: Dashboard
|
|
2363
|
+
description: Dashboard summary and aggregates
|
|
2284
2364
|
content:
|
|
2285
2365
|
application/json:
|
|
2286
2366
|
schema:
|
|
@@ -2296,8 +2376,14 @@ paths:
|
|
|
2296
2376
|
averageOverallScore: 0
|
|
2297
2377
|
issueCount: 0
|
|
2298
2378
|
criticalIssueCount: 0
|
|
2299
|
-
|
|
2300
|
-
|
|
2379
|
+
dimensionAggregates: []
|
|
2380
|
+
fixStatusSummary:
|
|
2381
|
+
queued: 0
|
|
2382
|
+
generating: 0
|
|
2383
|
+
prCreated: 0
|
|
2384
|
+
merged: 0
|
|
2385
|
+
failed: 0
|
|
2386
|
+
total: 0
|
|
2301
2387
|
"401":
|
|
2302
2388
|
$ref: "#/components/responses/Unauthorized"
|
|
2303
2389
|
"403":
|
|
@@ -2319,39 +2405,53 @@ paths:
|
|
|
2319
2405
|
operationId: getAgenticFoundationAgenticReadiness
|
|
2320
2406
|
parameters:
|
|
2321
2407
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2408
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2409
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2410
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2411
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2412
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2413
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2322
2414
|
responses:
|
|
2323
2415
|
"200":
|
|
2324
|
-
description:
|
|
2416
|
+
description: Paginated repositories with ai-agent-readiness slice
|
|
2325
2417
|
content:
|
|
2326
2418
|
application/json:
|
|
2327
2419
|
schema:
|
|
2328
|
-
|
|
2329
|
-
items:
|
|
2330
|
-
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
2420
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2331
2421
|
examples:
|
|
2332
2422
|
singleRepoSlice:
|
|
2333
2423
|
summary: One repo, single pillar dimension
|
|
2334
2424
|
value:
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2425
|
+
total: 1
|
|
2426
|
+
limit: 25
|
|
2427
|
+
offset: 0
|
|
2428
|
+
items:
|
|
2429
|
+
- repoId: 00000000-0000-0000-0000-000000000002
|
|
2430
|
+
repoName: api-gateway
|
|
2431
|
+
language: typescript
|
|
2432
|
+
overallScore: 67
|
|
2433
|
+
dimensions:
|
|
2434
|
+
- dimensionId: ai-agent-readiness
|
|
2435
|
+
score: 2
|
|
2436
|
+
maxScore: 3
|
|
2437
|
+
issues: []
|
|
2438
|
+
lastAnalyzed: "2026-05-12T12:00:00.000Z"
|
|
2439
|
+
teamId: null
|
|
2440
|
+
provider:
|
|
2441
|
+
kind: github
|
|
2442
|
+
slug: acme/api-gateway
|
|
2443
|
+
webUrl: https://github.com/acme/api-gateway
|
|
2444
|
+
defaultBranch: main
|
|
2445
|
+
externalId: null
|
|
2446
|
+
hostBaseUrl: null
|
|
2447
|
+
analysisStatus: idle
|
|
2448
|
+
activeRunId: null
|
|
2449
|
+
"400":
|
|
2450
|
+
description: Invalid pagination or sort query
|
|
2451
|
+
content:
|
|
2452
|
+
application/json:
|
|
2453
|
+
schema:
|
|
2454
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2355
2455
|
"401":
|
|
2356
2456
|
$ref: "#/components/responses/Unauthorized"
|
|
2357
2457
|
"403":
|
|
@@ -2371,15 +2471,25 @@ paths:
|
|
|
2371
2471
|
operationId: getAgenticFoundationRepositoryHealth
|
|
2372
2472
|
parameters:
|
|
2373
2473
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2474
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2475
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2476
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2477
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2478
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2479
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2374
2480
|
responses:
|
|
2375
2481
|
"200":
|
|
2376
|
-
description:
|
|
2482
|
+
description: Paginated repositories with repo-hygiene slice
|
|
2377
2483
|
content:
|
|
2378
2484
|
application/json:
|
|
2379
2485
|
schema:
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2486
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2487
|
+
"400":
|
|
2488
|
+
description: Invalid pagination or sort query
|
|
2489
|
+
content:
|
|
2490
|
+
application/json:
|
|
2491
|
+
schema:
|
|
2492
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2383
2493
|
"401":
|
|
2384
2494
|
$ref: "#/components/responses/Unauthorized"
|
|
2385
2495
|
"403":
|
|
@@ -2399,15 +2509,25 @@ paths:
|
|
|
2399
2509
|
operationId: getAgenticFoundationCodebaseQuality
|
|
2400
2510
|
parameters:
|
|
2401
2511
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2512
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2513
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2514
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2515
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2516
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2517
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2402
2518
|
responses:
|
|
2403
2519
|
"200":
|
|
2404
|
-
description:
|
|
2520
|
+
description: Paginated repositories with stack-quality slice
|
|
2405
2521
|
content:
|
|
2406
2522
|
application/json:
|
|
2407
2523
|
schema:
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2524
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2525
|
+
"400":
|
|
2526
|
+
description: Invalid pagination or sort query
|
|
2527
|
+
content:
|
|
2528
|
+
application/json:
|
|
2529
|
+
schema:
|
|
2530
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2411
2531
|
"401":
|
|
2412
2532
|
$ref: "#/components/responses/Unauthorized"
|
|
2413
2533
|
"403":
|
|
@@ -2427,15 +2547,25 @@ paths:
|
|
|
2427
2547
|
operationId: getAgenticFoundationTestQa
|
|
2428
2548
|
parameters:
|
|
2429
2549
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2550
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2551
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2552
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2553
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2554
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2555
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2430
2556
|
responses:
|
|
2431
2557
|
"200":
|
|
2432
|
-
description:
|
|
2558
|
+
description: Paginated repositories with tests-qa slice
|
|
2433
2559
|
content:
|
|
2434
2560
|
application/json:
|
|
2435
2561
|
schema:
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2562
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2563
|
+
"400":
|
|
2564
|
+
description: Invalid pagination or sort query
|
|
2565
|
+
content:
|
|
2566
|
+
application/json:
|
|
2567
|
+
schema:
|
|
2568
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2439
2569
|
"401":
|
|
2440
2570
|
$ref: "#/components/responses/Unauthorized"
|
|
2441
2571
|
"403":
|
|
@@ -2455,15 +2585,25 @@ paths:
|
|
|
2455
2585
|
operationId: getAgenticFoundationObservability
|
|
2456
2586
|
parameters:
|
|
2457
2587
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2588
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2589
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2590
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2591
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2592
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2593
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2458
2594
|
responses:
|
|
2459
2595
|
"200":
|
|
2460
|
-
description:
|
|
2596
|
+
description: Paginated repositories with observability slice
|
|
2461
2597
|
content:
|
|
2462
2598
|
application/json:
|
|
2463
2599
|
schema:
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2600
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2601
|
+
"400":
|
|
2602
|
+
description: Invalid pagination or sort query
|
|
2603
|
+
content:
|
|
2604
|
+
application/json:
|
|
2605
|
+
schema:
|
|
2606
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2467
2607
|
"401":
|
|
2468
2608
|
$ref: "#/components/responses/Unauthorized"
|
|
2469
2609
|
"403":
|
|
@@ -2483,15 +2623,25 @@ paths:
|
|
|
2483
2623
|
operationId: getAgenticFoundationApiContract
|
|
2484
2624
|
parameters:
|
|
2485
2625
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2626
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2627
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2628
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2629
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2630
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2631
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2486
2632
|
responses:
|
|
2487
2633
|
"200":
|
|
2488
|
-
description:
|
|
2634
|
+
description: Paginated repositories with api-contracts slice
|
|
2489
2635
|
content:
|
|
2490
2636
|
application/json:
|
|
2491
2637
|
schema:
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2638
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2639
|
+
"400":
|
|
2640
|
+
description: Invalid pagination or sort query
|
|
2641
|
+
content:
|
|
2642
|
+
application/json:
|
|
2643
|
+
schema:
|
|
2644
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2495
2645
|
"401":
|
|
2496
2646
|
$ref: "#/components/responses/Unauthorized"
|
|
2497
2647
|
"403":
|
|
@@ -2511,15 +2661,25 @@ paths:
|
|
|
2511
2661
|
operationId: getAgenticFoundationPlatformGovernance
|
|
2512
2662
|
parameters:
|
|
2513
2663
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2664
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2665
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2666
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2667
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2668
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2669
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2514
2670
|
responses:
|
|
2515
2671
|
"200":
|
|
2516
|
-
description:
|
|
2672
|
+
description: Paginated repositories with platform-governance slice
|
|
2517
2673
|
content:
|
|
2518
2674
|
application/json:
|
|
2519
2675
|
schema:
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2676
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2677
|
+
"400":
|
|
2678
|
+
description: Invalid pagination or sort query
|
|
2679
|
+
content:
|
|
2680
|
+
application/json:
|
|
2681
|
+
schema:
|
|
2682
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2523
2683
|
"401":
|
|
2524
2684
|
$ref: "#/components/responses/Unauthorized"
|
|
2525
2685
|
"403":
|
|
@@ -2539,15 +2699,25 @@ paths:
|
|
|
2539
2699
|
operationId: getAgenticFoundationDeliveryGovernance
|
|
2540
2700
|
parameters:
|
|
2541
2701
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2702
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2703
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2704
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2705
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2706
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2707
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2542
2708
|
responses:
|
|
2543
2709
|
"200":
|
|
2544
|
-
description:
|
|
2710
|
+
description: Paginated repositories with delivery slice
|
|
2545
2711
|
content:
|
|
2546
2712
|
application/json:
|
|
2547
2713
|
schema:
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2714
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2715
|
+
"400":
|
|
2716
|
+
description: Invalid pagination or sort query
|
|
2717
|
+
content:
|
|
2718
|
+
application/json:
|
|
2719
|
+
schema:
|
|
2720
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2551
2721
|
"401":
|
|
2552
2722
|
$ref: "#/components/responses/Unauthorized"
|
|
2553
2723
|
"403":
|
|
@@ -2569,15 +2739,25 @@ paths:
|
|
|
2569
2739
|
operationId: getAgenticFoundationAiResolutionHub
|
|
2570
2740
|
parameters:
|
|
2571
2741
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2742
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2743
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2744
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2745
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2746
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2747
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2572
2748
|
responses:
|
|
2573
2749
|
"200":
|
|
2574
2750
|
description: Full repository readiness scorecards
|
|
2575
2751
|
content:
|
|
2576
2752
|
application/json:
|
|
2577
2753
|
schema:
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2754
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2755
|
+
"400":
|
|
2756
|
+
description: Invalid pagination or sort query
|
|
2757
|
+
content:
|
|
2758
|
+
application/json:
|
|
2759
|
+
schema:
|
|
2760
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2581
2761
|
"401":
|
|
2582
2762
|
$ref: "#/components/responses/Unauthorized"
|
|
2583
2763
|
"403":
|
|
@@ -2622,21 +2802,32 @@ paths:
|
|
|
2622
2802
|
/workspaces/{workspaceId}/readiness/fixes:
|
|
2623
2803
|
get:
|
|
2624
2804
|
tags: [RepositoryReadiness]
|
|
2625
|
-
summary: List fix requests
|
|
2805
|
+
summary: List fix requests (paginated)
|
|
2626
2806
|
description: >
|
|
2627
|
-
Returns persisted fix-queue rows for the workspace (newest first).
|
|
2807
|
+
Returns a page of persisted fix-queue rows for the workspace (default newest first).
|
|
2628
2808
|
operationId: listReadinessFixes
|
|
2629
2809
|
parameters:
|
|
2630
2810
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2811
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2812
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2813
|
+
- $ref: "#/components/parameters/ReadinessFixSort"
|
|
2814
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2815
|
+
- $ref: "#/components/parameters/ReadinessFixSearch"
|
|
2816
|
+
- $ref: "#/components/parameters/ReadinessFixStatusFilter"
|
|
2817
|
+
- $ref: "#/components/parameters/ReadinessFixRepoIdFilter"
|
|
2631
2818
|
responses:
|
|
2632
2819
|
"200":
|
|
2633
|
-
description:
|
|
2820
|
+
description: Paginated fix queue
|
|
2634
2821
|
content:
|
|
2635
2822
|
application/json:
|
|
2636
2823
|
schema:
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2824
|
+
$ref: "#/components/schemas/ReadinessFixListDto"
|
|
2825
|
+
"400":
|
|
2826
|
+
description: Invalid pagination or sort query
|
|
2827
|
+
content:
|
|
2828
|
+
application/json:
|
|
2829
|
+
schema:
|
|
2830
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2640
2831
|
"401":
|
|
2641
2832
|
$ref: "#/components/responses/Unauthorized"
|
|
2642
2833
|
"403":
|
|
@@ -3391,6 +3582,129 @@ components:
|
|
|
3391
3582
|
schema:
|
|
3392
3583
|
type: string
|
|
3393
3584
|
default: All departments
|
|
3585
|
+
PaginationLimit:
|
|
3586
|
+
name: limit
|
|
3587
|
+
in: query
|
|
3588
|
+
required: false
|
|
3589
|
+
description: Page size (default 25, max 100).
|
|
3590
|
+
schema:
|
|
3591
|
+
type: integer
|
|
3592
|
+
minimum: 1
|
|
3593
|
+
maximum: 100
|
|
3594
|
+
default: 25
|
|
3595
|
+
PaginationOffset:
|
|
3596
|
+
name: offset
|
|
3597
|
+
in: query
|
|
3598
|
+
required: false
|
|
3599
|
+
description: Zero-based row offset into the filtered, sorted result set.
|
|
3600
|
+
schema:
|
|
3601
|
+
type: integer
|
|
3602
|
+
minimum: 0
|
|
3603
|
+
default: 0
|
|
3604
|
+
PaginationOrder:
|
|
3605
|
+
name: order
|
|
3606
|
+
in: query
|
|
3607
|
+
required: false
|
|
3608
|
+
description: Sort direction.
|
|
3609
|
+
schema:
|
|
3610
|
+
type: string
|
|
3611
|
+
enum: [asc, desc]
|
|
3612
|
+
default: desc
|
|
3613
|
+
ReadinessRepoSort:
|
|
3614
|
+
name: sort
|
|
3615
|
+
in: query
|
|
3616
|
+
required: false
|
|
3617
|
+
description: Allowlisted repository sort field.
|
|
3618
|
+
schema:
|
|
3619
|
+
type: string
|
|
3620
|
+
enum: [repoName, overallScore, lastAnalyzed, language]
|
|
3621
|
+
default: overallScore
|
|
3622
|
+
ReadinessRepoSearch:
|
|
3623
|
+
name: search
|
|
3624
|
+
in: query
|
|
3625
|
+
required: false
|
|
3626
|
+
description: Case-insensitive filter on repository name, language, or provider slug.
|
|
3627
|
+
schema:
|
|
3628
|
+
type: string
|
|
3629
|
+
maxLength: 256
|
|
3630
|
+
ReadinessRepoLanguage:
|
|
3631
|
+
name: language
|
|
3632
|
+
in: query
|
|
3633
|
+
required: false
|
|
3634
|
+
description: Exact language filter (e.g. `typescript`).
|
|
3635
|
+
schema:
|
|
3636
|
+
type: string
|
|
3637
|
+
maxLength: 64
|
|
3638
|
+
ReadinessFixSort:
|
|
3639
|
+
name: sort
|
|
3640
|
+
in: query
|
|
3641
|
+
required: false
|
|
3642
|
+
description: Allowlisted fix-queue sort field.
|
|
3643
|
+
schema:
|
|
3644
|
+
type: string
|
|
3645
|
+
enum: [createdAt, repoName, severity, status]
|
|
3646
|
+
default: createdAt
|
|
3647
|
+
ReadinessFixStatusFilter:
|
|
3648
|
+
name: status
|
|
3649
|
+
in: query
|
|
3650
|
+
required: false
|
|
3651
|
+
description: Filter fixes by workflow status.
|
|
3652
|
+
schema:
|
|
3653
|
+
type: string
|
|
3654
|
+
enum: [queued, generating, pr-created, merged, failed]
|
|
3655
|
+
ReadinessFixRepoIdFilter:
|
|
3656
|
+
name: repoId
|
|
3657
|
+
in: query
|
|
3658
|
+
required: false
|
|
3659
|
+
description: Filter fixes to a single workspace repository id.
|
|
3660
|
+
schema:
|
|
3661
|
+
type: string
|
|
3662
|
+
format: uuid
|
|
3663
|
+
ReadinessFixSearch:
|
|
3664
|
+
name: search
|
|
3665
|
+
in: query
|
|
3666
|
+
required: false
|
|
3667
|
+
description: Case-insensitive filter on repo name, issue title, label, or description.
|
|
3668
|
+
schema:
|
|
3669
|
+
type: string
|
|
3670
|
+
maxLength: 256
|
|
3671
|
+
GithubRepoLimit:
|
|
3672
|
+
name: repoLimit
|
|
3673
|
+
in: query
|
|
3674
|
+
required: false
|
|
3675
|
+
description: Page size for the nested installation repo list (default 25, max 100).
|
|
3676
|
+
schema:
|
|
3677
|
+
type: integer
|
|
3678
|
+
minimum: 1
|
|
3679
|
+
maximum: 100
|
|
3680
|
+
default: 25
|
|
3681
|
+
GithubRepoOffset:
|
|
3682
|
+
name: repoOffset
|
|
3683
|
+
in: query
|
|
3684
|
+
required: false
|
|
3685
|
+
description: Zero-based offset into the merged installation repo list.
|
|
3686
|
+
schema:
|
|
3687
|
+
type: integer
|
|
3688
|
+
minimum: 0
|
|
3689
|
+
default: 0
|
|
3690
|
+
GithubRepoSort:
|
|
3691
|
+
name: repoSort
|
|
3692
|
+
in: query
|
|
3693
|
+
required: false
|
|
3694
|
+
description: Allowlisted GitHub repo sort field.
|
|
3695
|
+
schema:
|
|
3696
|
+
type: string
|
|
3697
|
+
enum: [name, updatedAt]
|
|
3698
|
+
default: name
|
|
3699
|
+
GithubRepoOrder:
|
|
3700
|
+
name: repoOrder
|
|
3701
|
+
in: query
|
|
3702
|
+
required: false
|
|
3703
|
+
description: Sort direction for the nested installation repo list.
|
|
3704
|
+
schema:
|
|
3705
|
+
type: string
|
|
3706
|
+
enum: [asc, desc]
|
|
3707
|
+
default: asc
|
|
3394
3708
|
|
|
3395
3709
|
responses:
|
|
3396
3710
|
Unauthorized:
|
|
@@ -4806,6 +5120,11 @@ components:
|
|
|
4806
5120
|
private:
|
|
4807
5121
|
type: boolean
|
|
4808
5122
|
nullable: true
|
|
5123
|
+
updatedAt:
|
|
5124
|
+
type: string
|
|
5125
|
+
format: date-time
|
|
5126
|
+
nullable: true
|
|
5127
|
+
description: Last push or metadata update from GitHub when available.
|
|
4809
5128
|
|
|
4810
5129
|
GithubMissingPermissionDto:
|
|
4811
5130
|
type: object
|
|
@@ -4834,9 +5153,9 @@ components:
|
|
|
4834
5153
|
allOf:
|
|
4835
5154
|
- $ref: "#/components/schemas/GithubAccountDto"
|
|
4836
5155
|
repos:
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
5156
|
+
allOf:
|
|
5157
|
+
- $ref: "#/components/schemas/GithubInstalledRepoListDto"
|
|
5158
|
+
description: Paginated repositories granted on this installation (same repoLimit/repoOffset as top-level repos).
|
|
4840
5159
|
manageUrl:
|
|
4841
5160
|
type: string
|
|
4842
5161
|
format: uri
|
|
@@ -4880,10 +5199,10 @@ components:
|
|
|
4880
5199
|
allOf:
|
|
4881
5200
|
- $ref: "#/components/schemas/GithubAccountDto"
|
|
4882
5201
|
repos:
|
|
4883
|
-
type: array
|
|
4884
|
-
items:
|
|
4885
|
-
$ref: "#/components/schemas/GithubInstalledRepoDto"
|
|
4886
5202
|
nullable: true
|
|
5203
|
+
allOf:
|
|
5204
|
+
- $ref: "#/components/schemas/GithubInstalledRepoListDto"
|
|
5205
|
+
description: Paginated merged installation repositories when `installed` is true.
|
|
4887
5206
|
manageUrl:
|
|
4888
5207
|
type: string
|
|
4889
5208
|
format: uri
|
|
@@ -5392,48 +5711,98 @@ components:
|
|
|
5392
5711
|
type: integer
|
|
5393
5712
|
minimum: 0
|
|
5394
5713
|
|
|
5395
|
-
|
|
5714
|
+
PageMetaDto:
|
|
5396
5715
|
type: object
|
|
5397
|
-
required:
|
|
5398
|
-
|
|
5716
|
+
required: [total, limit, offset]
|
|
5717
|
+
properties:
|
|
5718
|
+
total:
|
|
5719
|
+
type: integer
|
|
5720
|
+
minimum: 0
|
|
5721
|
+
description: Total rows matching filters (full workspace, not just this page).
|
|
5722
|
+
limit:
|
|
5723
|
+
type: integer
|
|
5724
|
+
minimum: 1
|
|
5725
|
+
maximum: 100
|
|
5726
|
+
offset:
|
|
5727
|
+
type: integer
|
|
5728
|
+
minimum: 0
|
|
5729
|
+
|
|
5730
|
+
ReadinessRepoListDto:
|
|
5731
|
+
allOf:
|
|
5732
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5733
|
+
- type: object
|
|
5734
|
+
required: [items]
|
|
5735
|
+
properties:
|
|
5736
|
+
items:
|
|
5737
|
+
type: array
|
|
5738
|
+
items:
|
|
5739
|
+
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
5740
|
+
|
|
5741
|
+
ReadinessFixListDto:
|
|
5742
|
+
allOf:
|
|
5743
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5744
|
+
- type: object
|
|
5745
|
+
required: [items]
|
|
5746
|
+
properties:
|
|
5747
|
+
items:
|
|
5748
|
+
type: array
|
|
5749
|
+
items:
|
|
5750
|
+
$ref: "#/components/schemas/FixRequestDto"
|
|
5751
|
+
|
|
5752
|
+
AgenticFoundationDimensionAggregateDto:
|
|
5753
|
+
type: object
|
|
5754
|
+
required: [dimensionId, averageScorePercent, repoCount]
|
|
5399
5755
|
properties:
|
|
5400
|
-
id:
|
|
5401
|
-
type: string
|
|
5402
|
-
format: uuid
|
|
5403
|
-
repoId:
|
|
5404
|
-
type: string
|
|
5405
|
-
format: uuid
|
|
5406
|
-
repoName:
|
|
5407
|
-
type: string
|
|
5408
|
-
maxLength: 256
|
|
5409
|
-
provider:
|
|
5410
|
-
$ref: "#/components/schemas/RepoProviderDto"
|
|
5411
5756
|
dimensionId:
|
|
5412
5757
|
$ref: "#/components/schemas/ReadinessDimensionId"
|
|
5413
|
-
|
|
5414
|
-
type:
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5418
|
-
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
type:
|
|
5432
|
-
|
|
5758
|
+
averageScorePercent:
|
|
5759
|
+
type: integer
|
|
5760
|
+
minimum: 0
|
|
5761
|
+
maximum: 100
|
|
5762
|
+
description: Mean dimension score percent across repos with maxScore > 0.
|
|
5763
|
+
repoCount:
|
|
5764
|
+
type: integer
|
|
5765
|
+
minimum: 0
|
|
5766
|
+
description: Repositories with a scored row for this dimension.
|
|
5767
|
+
|
|
5768
|
+
ReadinessFixStatusSummaryDto:
|
|
5769
|
+
type: object
|
|
5770
|
+
required: [queued, generating, prCreated, merged, failed, total]
|
|
5771
|
+
properties:
|
|
5772
|
+
queued:
|
|
5773
|
+
type: integer
|
|
5774
|
+
minimum: 0
|
|
5775
|
+
generating:
|
|
5776
|
+
type: integer
|
|
5777
|
+
minimum: 0
|
|
5778
|
+
prCreated:
|
|
5779
|
+
type: integer
|
|
5780
|
+
minimum: 0
|
|
5781
|
+
description: Count of fixes with status `pr-created`.
|
|
5782
|
+
merged:
|
|
5783
|
+
type: integer
|
|
5784
|
+
minimum: 0
|
|
5785
|
+
failed:
|
|
5786
|
+
type: integer
|
|
5787
|
+
minimum: 0
|
|
5788
|
+
total:
|
|
5789
|
+
type: integer
|
|
5790
|
+
minimum: 0
|
|
5791
|
+
|
|
5792
|
+
GithubInstalledRepoListDto:
|
|
5793
|
+
allOf:
|
|
5794
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5795
|
+
- type: object
|
|
5796
|
+
required: [items]
|
|
5797
|
+
properties:
|
|
5798
|
+
items:
|
|
5799
|
+
type: array
|
|
5800
|
+
items:
|
|
5801
|
+
$ref: "#/components/schemas/GithubInstalledRepoDto"
|
|
5433
5802
|
|
|
5434
5803
|
AgenticFoundationDashboardDto:
|
|
5435
5804
|
type: object
|
|
5436
|
-
required: [workspaceId, generatedAt, summary,
|
|
5805
|
+
required: [workspaceId, generatedAt, summary, dimensionAggregates, fixStatusSummary]
|
|
5437
5806
|
properties:
|
|
5438
5807
|
workspaceId:
|
|
5439
5808
|
type: string
|
|
@@ -5443,14 +5812,13 @@ components:
|
|
|
5443
5812
|
format: date-time
|
|
5444
5813
|
summary:
|
|
5445
5814
|
$ref: "#/components/schemas/AgenticFoundationDashboardSummaryDto"
|
|
5446
|
-
|
|
5447
|
-
type: array
|
|
5448
|
-
items:
|
|
5449
|
-
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
5450
|
-
issueQueue:
|
|
5815
|
+
dimensionAggregates:
|
|
5451
5816
|
type: array
|
|
5452
5817
|
items:
|
|
5453
|
-
$ref: "#/components/schemas/
|
|
5818
|
+
$ref: "#/components/schemas/AgenticFoundationDimensionAggregateDto"
|
|
5819
|
+
description: Per-dimension average score bars for overview UI (full workspace aggregates).
|
|
5820
|
+
fixStatusSummary:
|
|
5821
|
+
$ref: "#/components/schemas/ReadinessFixStatusSummaryDto"
|
|
5454
5822
|
|
|
5455
5823
|
FixRequestDto:
|
|
5456
5824
|
type: object
|