@thinkai/tai-api-contract 2.5.17 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/openapi.d.ts +944 -43
- package/dist/generated/openapi.d.ts.map +1 -1
- package/dist/index.d.ts +108 -1
- package/dist/index.d.ts.map +1 -1
- package/openapi/openapi.yaml +928 -92
- package/package.json +1 -1
- package/src/generated/openapi.ts +944 -43
- package/src/index.ts +122 -1
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.0
|
|
5
5
|
description: >
|
|
6
6
|
Contract surface for the AI Driven SDLC backend used by ThinkAI.
|
|
7
7
|
Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
|
|
@@ -50,6 +50,8 @@ tags:
|
|
|
50
50
|
description: Org chart import via storage path (§14)
|
|
51
51
|
- name: AgenticFoundation
|
|
52
52
|
description: Agentic Foundation pillars (epic #278); reads stored repository readiness snapshots
|
|
53
|
+
- name: YourAiJourney
|
|
54
|
+
description: Your AI Journey dashboard aggregators (epic #267); composes readiness, metrics, and AI-spend data for the /dashboard page
|
|
53
55
|
|
|
54
56
|
paths:
|
|
55
57
|
/me:
|
|
@@ -1503,6 +1505,10 @@ paths:
|
|
|
1503
1505
|
schema:
|
|
1504
1506
|
type: boolean
|
|
1505
1507
|
default: false
|
|
1508
|
+
- $ref: "#/components/parameters/GithubRepoLimit"
|
|
1509
|
+
- $ref: "#/components/parameters/GithubRepoOffset"
|
|
1510
|
+
- $ref: "#/components/parameters/GithubRepoSort"
|
|
1511
|
+
- $ref: "#/components/parameters/GithubRepoOrder"
|
|
1506
1512
|
responses:
|
|
1507
1513
|
"200":
|
|
1508
1514
|
description: Installation status
|
|
@@ -2120,19 +2126,33 @@ paths:
|
|
|
2120
2126
|
/workspaces/{workspaceId}/readiness/repos:
|
|
2121
2127
|
get:
|
|
2122
2128
|
tags: [RepositoryReadiness]
|
|
2123
|
-
summary: List repo readiness scores
|
|
2129
|
+
summary: List repo readiness scores (paginated)
|
|
2124
2130
|
operationId: listReadinessRepos
|
|
2131
|
+
description: >
|
|
2132
|
+
Returns a page of repository readiness scorecards. Use `GET .../readiness/repos/{repoId}`
|
|
2133
|
+
for a single repo. Summary aggregates on the Agentic Foundation dashboard use separate
|
|
2134
|
+
aggregate queries over the full workspace (#403).
|
|
2125
2135
|
parameters:
|
|
2126
2136
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2137
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2138
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2139
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2140
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2141
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2142
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2127
2143
|
responses:
|
|
2128
2144
|
"200":
|
|
2129
|
-
description:
|
|
2145
|
+
description: Paginated repositories analyzed
|
|
2130
2146
|
content:
|
|
2131
2147
|
application/json:
|
|
2132
2148
|
schema:
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2149
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2150
|
+
"400":
|
|
2151
|
+
description: Invalid pagination or sort query
|
|
2152
|
+
content:
|
|
2153
|
+
application/json:
|
|
2154
|
+
schema:
|
|
2155
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2136
2156
|
"401":
|
|
2137
2157
|
$ref: "#/components/responses/Unauthorized"
|
|
2138
2158
|
"403":
|
|
@@ -2267,18 +2287,19 @@ paths:
|
|
|
2267
2287
|
/workspaces/{workspaceId}/agentic-foundation/dashboard:
|
|
2268
2288
|
get:
|
|
2269
2289
|
tags: [AgenticFoundation]
|
|
2270
|
-
summary: Agentic Foundation dashboard
|
|
2290
|
+
summary: Agentic Foundation dashboard summary
|
|
2271
2291
|
description: >
|
|
2272
|
-
Returns
|
|
2273
|
-
Agentic Foundation dashboard surfaces.
|
|
2274
|
-
|
|
2275
|
-
|
|
2292
|
+
Returns workspace-level readiness summary, per-dimension aggregate bars, and fix status
|
|
2293
|
+
counts for Agentic Foundation dashboard surfaces. Repository and issue lists are paginated
|
|
2294
|
+
on `GET .../readiness/repos` and related segment routes (#403). Read-only; does not run
|
|
2295
|
+
scoring on the request path (issue #279). Field `generatedAt` is the server timestamp when
|
|
2296
|
+
this JSON payload was assembled.
|
|
2276
2297
|
operationId: getAgenticFoundationDashboard
|
|
2277
2298
|
parameters:
|
|
2278
2299
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2279
2300
|
responses:
|
|
2280
2301
|
"200":
|
|
2281
|
-
description: Dashboard
|
|
2302
|
+
description: Dashboard summary and aggregates
|
|
2282
2303
|
content:
|
|
2283
2304
|
application/json:
|
|
2284
2305
|
schema:
|
|
@@ -2294,8 +2315,14 @@ paths:
|
|
|
2294
2315
|
averageOverallScore: 0
|
|
2295
2316
|
issueCount: 0
|
|
2296
2317
|
criticalIssueCount: 0
|
|
2297
|
-
|
|
2298
|
-
|
|
2318
|
+
dimensionAggregates: []
|
|
2319
|
+
fixStatusSummary:
|
|
2320
|
+
queued: 0
|
|
2321
|
+
generating: 0
|
|
2322
|
+
prCreated: 0
|
|
2323
|
+
merged: 0
|
|
2324
|
+
failed: 0
|
|
2325
|
+
total: 0
|
|
2299
2326
|
"401":
|
|
2300
2327
|
$ref: "#/components/responses/Unauthorized"
|
|
2301
2328
|
"403":
|
|
@@ -2317,39 +2344,53 @@ paths:
|
|
|
2317
2344
|
operationId: getAgenticFoundationAgenticReadiness
|
|
2318
2345
|
parameters:
|
|
2319
2346
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2347
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2348
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2349
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2350
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2351
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2352
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2320
2353
|
responses:
|
|
2321
2354
|
"200":
|
|
2322
|
-
description:
|
|
2355
|
+
description: Paginated repositories with ai-agent-readiness slice
|
|
2323
2356
|
content:
|
|
2324
2357
|
application/json:
|
|
2325
2358
|
schema:
|
|
2326
|
-
|
|
2327
|
-
items:
|
|
2328
|
-
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
2359
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2329
2360
|
examples:
|
|
2330
2361
|
singleRepoSlice:
|
|
2331
2362
|
summary: One repo, single pillar dimension
|
|
2332
2363
|
value:
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2364
|
+
total: 1
|
|
2365
|
+
limit: 25
|
|
2366
|
+
offset: 0
|
|
2367
|
+
items:
|
|
2368
|
+
- repoId: 00000000-0000-0000-0000-000000000002
|
|
2369
|
+
repoName: api-gateway
|
|
2370
|
+
language: typescript
|
|
2371
|
+
overallScore: 67
|
|
2372
|
+
dimensions:
|
|
2373
|
+
- dimensionId: ai-agent-readiness
|
|
2374
|
+
score: 2
|
|
2375
|
+
maxScore: 3
|
|
2376
|
+
issues: []
|
|
2377
|
+
lastAnalyzed: "2026-05-12T12:00:00.000Z"
|
|
2378
|
+
teamId: null
|
|
2379
|
+
provider:
|
|
2380
|
+
kind: github
|
|
2381
|
+
slug: acme/api-gateway
|
|
2382
|
+
webUrl: https://github.com/acme/api-gateway
|
|
2383
|
+
defaultBranch: main
|
|
2384
|
+
externalId: null
|
|
2385
|
+
hostBaseUrl: null
|
|
2386
|
+
analysisStatus: idle
|
|
2387
|
+
activeRunId: null
|
|
2388
|
+
"400":
|
|
2389
|
+
description: Invalid pagination or sort query
|
|
2390
|
+
content:
|
|
2391
|
+
application/json:
|
|
2392
|
+
schema:
|
|
2393
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2353
2394
|
"401":
|
|
2354
2395
|
$ref: "#/components/responses/Unauthorized"
|
|
2355
2396
|
"403":
|
|
@@ -2369,15 +2410,25 @@ paths:
|
|
|
2369
2410
|
operationId: getAgenticFoundationRepositoryHealth
|
|
2370
2411
|
parameters:
|
|
2371
2412
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2413
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2414
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2415
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2416
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2417
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2418
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2372
2419
|
responses:
|
|
2373
2420
|
"200":
|
|
2374
|
-
description:
|
|
2421
|
+
description: Paginated repositories with repo-hygiene slice
|
|
2375
2422
|
content:
|
|
2376
2423
|
application/json:
|
|
2377
2424
|
schema:
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2425
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2426
|
+
"400":
|
|
2427
|
+
description: Invalid pagination or sort query
|
|
2428
|
+
content:
|
|
2429
|
+
application/json:
|
|
2430
|
+
schema:
|
|
2431
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2381
2432
|
"401":
|
|
2382
2433
|
$ref: "#/components/responses/Unauthorized"
|
|
2383
2434
|
"403":
|
|
@@ -2397,15 +2448,25 @@ paths:
|
|
|
2397
2448
|
operationId: getAgenticFoundationCodebaseQuality
|
|
2398
2449
|
parameters:
|
|
2399
2450
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2451
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2452
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2453
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2454
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2455
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2456
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2400
2457
|
responses:
|
|
2401
2458
|
"200":
|
|
2402
|
-
description:
|
|
2459
|
+
description: Paginated repositories with stack-quality slice
|
|
2403
2460
|
content:
|
|
2404
2461
|
application/json:
|
|
2405
2462
|
schema:
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2463
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2464
|
+
"400":
|
|
2465
|
+
description: Invalid pagination or sort query
|
|
2466
|
+
content:
|
|
2467
|
+
application/json:
|
|
2468
|
+
schema:
|
|
2469
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2409
2470
|
"401":
|
|
2410
2471
|
$ref: "#/components/responses/Unauthorized"
|
|
2411
2472
|
"403":
|
|
@@ -2425,15 +2486,25 @@ paths:
|
|
|
2425
2486
|
operationId: getAgenticFoundationTestQa
|
|
2426
2487
|
parameters:
|
|
2427
2488
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2489
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2490
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2491
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2492
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2493
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2494
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2428
2495
|
responses:
|
|
2429
2496
|
"200":
|
|
2430
|
-
description:
|
|
2497
|
+
description: Paginated repositories with tests-qa slice
|
|
2431
2498
|
content:
|
|
2432
2499
|
application/json:
|
|
2433
2500
|
schema:
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2501
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2502
|
+
"400":
|
|
2503
|
+
description: Invalid pagination or sort query
|
|
2504
|
+
content:
|
|
2505
|
+
application/json:
|
|
2506
|
+
schema:
|
|
2507
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2437
2508
|
"401":
|
|
2438
2509
|
$ref: "#/components/responses/Unauthorized"
|
|
2439
2510
|
"403":
|
|
@@ -2453,15 +2524,25 @@ paths:
|
|
|
2453
2524
|
operationId: getAgenticFoundationObservability
|
|
2454
2525
|
parameters:
|
|
2455
2526
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2527
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2528
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2529
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2530
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2531
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2532
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2456
2533
|
responses:
|
|
2457
2534
|
"200":
|
|
2458
|
-
description:
|
|
2535
|
+
description: Paginated repositories with observability slice
|
|
2459
2536
|
content:
|
|
2460
2537
|
application/json:
|
|
2461
2538
|
schema:
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2539
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2540
|
+
"400":
|
|
2541
|
+
description: Invalid pagination or sort query
|
|
2542
|
+
content:
|
|
2543
|
+
application/json:
|
|
2544
|
+
schema:
|
|
2545
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2465
2546
|
"401":
|
|
2466
2547
|
$ref: "#/components/responses/Unauthorized"
|
|
2467
2548
|
"403":
|
|
@@ -2481,15 +2562,25 @@ paths:
|
|
|
2481
2562
|
operationId: getAgenticFoundationApiContract
|
|
2482
2563
|
parameters:
|
|
2483
2564
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2565
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2566
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2567
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2568
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2569
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2570
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2484
2571
|
responses:
|
|
2485
2572
|
"200":
|
|
2486
|
-
description:
|
|
2573
|
+
description: Paginated repositories with api-contracts slice
|
|
2487
2574
|
content:
|
|
2488
2575
|
application/json:
|
|
2489
2576
|
schema:
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2577
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2578
|
+
"400":
|
|
2579
|
+
description: Invalid pagination or sort query
|
|
2580
|
+
content:
|
|
2581
|
+
application/json:
|
|
2582
|
+
schema:
|
|
2583
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2493
2584
|
"401":
|
|
2494
2585
|
$ref: "#/components/responses/Unauthorized"
|
|
2495
2586
|
"403":
|
|
@@ -2509,15 +2600,25 @@ paths:
|
|
|
2509
2600
|
operationId: getAgenticFoundationPlatformGovernance
|
|
2510
2601
|
parameters:
|
|
2511
2602
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2603
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2604
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2605
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2606
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2607
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2608
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2512
2609
|
responses:
|
|
2513
2610
|
"200":
|
|
2514
|
-
description:
|
|
2611
|
+
description: Paginated repositories with platform-governance slice
|
|
2515
2612
|
content:
|
|
2516
2613
|
application/json:
|
|
2517
2614
|
schema:
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2615
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2616
|
+
"400":
|
|
2617
|
+
description: Invalid pagination or sort query
|
|
2618
|
+
content:
|
|
2619
|
+
application/json:
|
|
2620
|
+
schema:
|
|
2621
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2521
2622
|
"401":
|
|
2522
2623
|
$ref: "#/components/responses/Unauthorized"
|
|
2523
2624
|
"403":
|
|
@@ -2537,15 +2638,25 @@ paths:
|
|
|
2537
2638
|
operationId: getAgenticFoundationDeliveryGovernance
|
|
2538
2639
|
parameters:
|
|
2539
2640
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2641
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2642
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2643
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2644
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2645
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2646
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2540
2647
|
responses:
|
|
2541
2648
|
"200":
|
|
2542
|
-
description:
|
|
2649
|
+
description: Paginated repositories with delivery slice
|
|
2543
2650
|
content:
|
|
2544
2651
|
application/json:
|
|
2545
2652
|
schema:
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2653
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2654
|
+
"400":
|
|
2655
|
+
description: Invalid pagination or sort query
|
|
2656
|
+
content:
|
|
2657
|
+
application/json:
|
|
2658
|
+
schema:
|
|
2659
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2549
2660
|
"401":
|
|
2550
2661
|
$ref: "#/components/responses/Unauthorized"
|
|
2551
2662
|
"403":
|
|
@@ -2567,15 +2678,25 @@ paths:
|
|
|
2567
2678
|
operationId: getAgenticFoundationAiResolutionHub
|
|
2568
2679
|
parameters:
|
|
2569
2680
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2681
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2682
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2683
|
+
- $ref: "#/components/parameters/ReadinessRepoSort"
|
|
2684
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2685
|
+
- $ref: "#/components/parameters/ReadinessRepoSearch"
|
|
2686
|
+
- $ref: "#/components/parameters/ReadinessRepoLanguage"
|
|
2570
2687
|
responses:
|
|
2571
2688
|
"200":
|
|
2572
2689
|
description: Full repository readiness scorecards
|
|
2573
2690
|
content:
|
|
2574
2691
|
application/json:
|
|
2575
2692
|
schema:
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2693
|
+
$ref: "#/components/schemas/ReadinessRepoListDto"
|
|
2694
|
+
"400":
|
|
2695
|
+
description: Invalid pagination or sort query
|
|
2696
|
+
content:
|
|
2697
|
+
application/json:
|
|
2698
|
+
schema:
|
|
2699
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2579
2700
|
"401":
|
|
2580
2701
|
$ref: "#/components/responses/Unauthorized"
|
|
2581
2702
|
"403":
|
|
@@ -2620,21 +2741,32 @@ paths:
|
|
|
2620
2741
|
/workspaces/{workspaceId}/readiness/fixes:
|
|
2621
2742
|
get:
|
|
2622
2743
|
tags: [RepositoryReadiness]
|
|
2623
|
-
summary: List fix requests
|
|
2744
|
+
summary: List fix requests (paginated)
|
|
2624
2745
|
description: >
|
|
2625
|
-
Returns persisted fix-queue rows for the workspace (newest first).
|
|
2746
|
+
Returns a page of persisted fix-queue rows for the workspace (default newest first).
|
|
2626
2747
|
operationId: listReadinessFixes
|
|
2627
2748
|
parameters:
|
|
2628
2749
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
2750
|
+
- $ref: "#/components/parameters/PaginationLimit"
|
|
2751
|
+
- $ref: "#/components/parameters/PaginationOffset"
|
|
2752
|
+
- $ref: "#/components/parameters/ReadinessFixSort"
|
|
2753
|
+
- $ref: "#/components/parameters/PaginationOrder"
|
|
2754
|
+
- $ref: "#/components/parameters/ReadinessFixSearch"
|
|
2755
|
+
- $ref: "#/components/parameters/ReadinessFixStatusFilter"
|
|
2756
|
+
- $ref: "#/components/parameters/ReadinessFixRepoIdFilter"
|
|
2629
2757
|
responses:
|
|
2630
2758
|
"200":
|
|
2631
|
-
description:
|
|
2759
|
+
description: Paginated fix queue
|
|
2632
2760
|
content:
|
|
2633
2761
|
application/json:
|
|
2634
2762
|
schema:
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2763
|
+
$ref: "#/components/schemas/ReadinessFixListDto"
|
|
2764
|
+
"400":
|
|
2765
|
+
description: Invalid pagination or sort query
|
|
2766
|
+
content:
|
|
2767
|
+
application/json:
|
|
2768
|
+
schema:
|
|
2769
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
2638
2770
|
"401":
|
|
2639
2771
|
$ref: "#/components/responses/Unauthorized"
|
|
2640
2772
|
"403":
|
|
@@ -3054,9 +3186,275 @@ paths:
|
|
|
3054
3186
|
content:
|
|
3055
3187
|
application/json:
|
|
3056
3188
|
schema:
|
|
3057
|
-
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3058
|
-
"503":
|
|
3059
|
-
description: Storage import not configured or service unavailable
|
|
3189
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3190
|
+
"503":
|
|
3191
|
+
description: Storage import not configured or service unavailable
|
|
3192
|
+
content:
|
|
3193
|
+
application/json:
|
|
3194
|
+
schema:
|
|
3195
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3196
|
+
|
|
3197
|
+
# ── Your AI Journey (/dashboard) — epic #267 ─────────────────────────────
|
|
3198
|
+
|
|
3199
|
+
/workspaces/{workspaceId}/your-ai-journey/analytics:
|
|
3200
|
+
get:
|
|
3201
|
+
tags: [YourAiJourney]
|
|
3202
|
+
summary: Combined analytics summary for the /dashboard page
|
|
3203
|
+
description: >
|
|
3204
|
+
Returns a single aggregated payload combining journey step progress, readiness summary,
|
|
3205
|
+
and PR-signal headline metrics. Covers issue #268. Results are cached for 60 seconds.
|
|
3206
|
+
operationId: getYourAiJourneyAnalytics
|
|
3207
|
+
parameters:
|
|
3208
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3209
|
+
responses:
|
|
3210
|
+
"200":
|
|
3211
|
+
description: Analytics summary
|
|
3212
|
+
content:
|
|
3213
|
+
application/json:
|
|
3214
|
+
schema:
|
|
3215
|
+
$ref: "#/components/schemas/YourAiJourneyAnalyticsDto"
|
|
3216
|
+
"401":
|
|
3217
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3218
|
+
"403":
|
|
3219
|
+
$ref: "#/components/responses/Forbidden"
|
|
3220
|
+
"404":
|
|
3221
|
+
description: Workspace does not exist
|
|
3222
|
+
content:
|
|
3223
|
+
application/json:
|
|
3224
|
+
schema:
|
|
3225
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3226
|
+
|
|
3227
|
+
/workspaces/{workspaceId}/your-ai-journey/pr-signals:
|
|
3228
|
+
get:
|
|
3229
|
+
tags: [YourAiJourney]
|
|
3230
|
+
summary: Weekly PR velocity and change-failure-rate time series
|
|
3231
|
+
description: >
|
|
3232
|
+
Returns a per-week time series of PR throughput and DORA change-failure-rate metrics,
|
|
3233
|
+
sourced from stored dashboard metrics. Covers issue #269. Results are cached for 60 seconds.
|
|
3234
|
+
operationId: getYourAiJourneyPrSignals
|
|
3235
|
+
parameters:
|
|
3236
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3237
|
+
- name: limit
|
|
3238
|
+
in: query
|
|
3239
|
+
schema:
|
|
3240
|
+
type: integer
|
|
3241
|
+
minimum: 1
|
|
3242
|
+
maximum: 52
|
|
3243
|
+
default: 8
|
|
3244
|
+
description: Number of weekly buckets to return (1–52; default 8).
|
|
3245
|
+
responses:
|
|
3246
|
+
"200":
|
|
3247
|
+
description: Weekly PR signals
|
|
3248
|
+
content:
|
|
3249
|
+
application/json:
|
|
3250
|
+
schema:
|
|
3251
|
+
$ref: "#/components/schemas/YourAiJourneyPrSignalsDto"
|
|
3252
|
+
"400":
|
|
3253
|
+
description: Invalid query parameter (limit out of range)
|
|
3254
|
+
content:
|
|
3255
|
+
application/json:
|
|
3256
|
+
schema:
|
|
3257
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3258
|
+
"401":
|
|
3259
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3260
|
+
"403":
|
|
3261
|
+
$ref: "#/components/responses/Forbidden"
|
|
3262
|
+
"404":
|
|
3263
|
+
description: Workspace does not exist
|
|
3264
|
+
content:
|
|
3265
|
+
application/json:
|
|
3266
|
+
schema:
|
|
3267
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3268
|
+
|
|
3269
|
+
/workspaces/{workspaceId}/your-ai-journey/readiness/aggregate:
|
|
3270
|
+
get:
|
|
3271
|
+
tags: [YourAiJourney]
|
|
3272
|
+
summary: Per-dimension readiness aggregate across all repos
|
|
3273
|
+
description: >
|
|
3274
|
+
Aggregates stored readiness scores across all workspace repos by dimension.
|
|
3275
|
+
Covers issue #270. Results are cached for 60 seconds.
|
|
3276
|
+
operationId: getYourAiJourneyReadinessAggregate
|
|
3277
|
+
parameters:
|
|
3278
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3279
|
+
responses:
|
|
3280
|
+
"200":
|
|
3281
|
+
description: Readiness aggregate
|
|
3282
|
+
content:
|
|
3283
|
+
application/json:
|
|
3284
|
+
schema:
|
|
3285
|
+
$ref: "#/components/schemas/YourAiJourneyReadinessAggregateDto"
|
|
3286
|
+
"401":
|
|
3287
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3288
|
+
"403":
|
|
3289
|
+
$ref: "#/components/responses/Forbidden"
|
|
3290
|
+
"404":
|
|
3291
|
+
description: Workspace does not exist
|
|
3292
|
+
content:
|
|
3293
|
+
application/json:
|
|
3294
|
+
schema:
|
|
3295
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3296
|
+
|
|
3297
|
+
/workspaces/{workspaceId}/your-ai-journey/journey/progress:
|
|
3298
|
+
get:
|
|
3299
|
+
tags: [YourAiJourney]
|
|
3300
|
+
summary: Workspace journey step completion
|
|
3301
|
+
description: >
|
|
3302
|
+
Returns the workspace-scoped journey progress state. Returns an empty `completedSteps`
|
|
3303
|
+
list with a synthetic `updatedAt` if no row exists yet. Covers issue #271.
|
|
3304
|
+
operationId: getYourAiJourneyProgress
|
|
3305
|
+
parameters:
|
|
3306
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3307
|
+
responses:
|
|
3308
|
+
"200":
|
|
3309
|
+
description: Journey progress
|
|
3310
|
+
content:
|
|
3311
|
+
application/json:
|
|
3312
|
+
schema:
|
|
3313
|
+
$ref: "#/components/schemas/JourneyProgressDto"
|
|
3314
|
+
"401":
|
|
3315
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3316
|
+
"403":
|
|
3317
|
+
$ref: "#/components/responses/Forbidden"
|
|
3318
|
+
"404":
|
|
3319
|
+
description: Workspace does not exist
|
|
3320
|
+
content:
|
|
3321
|
+
application/json:
|
|
3322
|
+
schema:
|
|
3323
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3324
|
+
put:
|
|
3325
|
+
tags: [YourAiJourney]
|
|
3326
|
+
summary: Replace workspace journey completed steps
|
|
3327
|
+
description: >
|
|
3328
|
+
Idempotent replace-all of completed route strings for the workspace journey.
|
|
3329
|
+
Requires editor role. Covers issue #271.
|
|
3330
|
+
operationId: putYourAiJourneyProgress
|
|
3331
|
+
parameters:
|
|
3332
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3333
|
+
requestBody:
|
|
3334
|
+
required: true
|
|
3335
|
+
content:
|
|
3336
|
+
application/json:
|
|
3337
|
+
schema:
|
|
3338
|
+
$ref: "#/components/schemas/JourneyProgressUpdateDto"
|
|
3339
|
+
responses:
|
|
3340
|
+
"200":
|
|
3341
|
+
description: Saved progress
|
|
3342
|
+
content:
|
|
3343
|
+
application/json:
|
|
3344
|
+
schema:
|
|
3345
|
+
$ref: "#/components/schemas/JourneyProgressDto"
|
|
3346
|
+
"400":
|
|
3347
|
+
description: Body fails validation (non-array, invalid entries, too many steps)
|
|
3348
|
+
content:
|
|
3349
|
+
application/json:
|
|
3350
|
+
schema:
|
|
3351
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3352
|
+
"401":
|
|
3353
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3354
|
+
"403":
|
|
3355
|
+
$ref: "#/components/responses/Forbidden"
|
|
3356
|
+
"404":
|
|
3357
|
+
description: Workspace does not exist
|
|
3358
|
+
content:
|
|
3359
|
+
application/json:
|
|
3360
|
+
schema:
|
|
3361
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3362
|
+
|
|
3363
|
+
/workspaces/{workspaceId}/your-ai-journey/agentic-foundation:
|
|
3364
|
+
get:
|
|
3365
|
+
tags: [YourAiJourney]
|
|
3366
|
+
summary: Agentic foundation dashboard slice for /dashboard
|
|
3367
|
+
description: >
|
|
3368
|
+
Returns the same `AgenticFoundationDashboardDto` payload as
|
|
3369
|
+
`GET /agentic-foundation/dashboard`, scoped to the /dashboard page context.
|
|
3370
|
+
Covers issue #272. Results are cached for 60 seconds.
|
|
3371
|
+
operationId: getYourAiJourneyAgenticFoundation
|
|
3372
|
+
parameters:
|
|
3373
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3374
|
+
responses:
|
|
3375
|
+
"200":
|
|
3376
|
+
description: Agentic foundation dashboard
|
|
3377
|
+
content:
|
|
3378
|
+
application/json:
|
|
3379
|
+
schema:
|
|
3380
|
+
$ref: "#/components/schemas/AgenticFoundationDashboardDto"
|
|
3381
|
+
"401":
|
|
3382
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3383
|
+
"403":
|
|
3384
|
+
$ref: "#/components/responses/Forbidden"
|
|
3385
|
+
"404":
|
|
3386
|
+
description: Workspace does not exist
|
|
3387
|
+
content:
|
|
3388
|
+
application/json:
|
|
3389
|
+
schema:
|
|
3390
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3391
|
+
|
|
3392
|
+
/workspaces/{workspaceId}/your-ai-journey/productivity:
|
|
3393
|
+
get:
|
|
3394
|
+
tags: [YourAiJourney]
|
|
3395
|
+
summary: Workspace productivity metrics for /dashboard
|
|
3396
|
+
description: >
|
|
3397
|
+
Returns the most recent stored dashboard productivity metrics snapshot that overlaps the
|
|
3398
|
+
requested window (defaults to the trailing 7 days). Same schema as
|
|
3399
|
+
`GET /dashboard/productivity`. Covers issue #273. Results are cached for 60 seconds.
|
|
3400
|
+
operationId: getYourAiJourneyProductivity
|
|
3401
|
+
parameters:
|
|
3402
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3403
|
+
- name: windowEnd
|
|
3404
|
+
in: query
|
|
3405
|
+
schema:
|
|
3406
|
+
type: string
|
|
3407
|
+
format: date-time
|
|
3408
|
+
description: Upper bound of the requested window (ISO 8601; defaults to now).
|
|
3409
|
+
responses:
|
|
3410
|
+
"200":
|
|
3411
|
+
description: Productivity metrics snapshot
|
|
3412
|
+
content:
|
|
3413
|
+
application/json:
|
|
3414
|
+
schema:
|
|
3415
|
+
$ref: "#/components/schemas/DashboardProductivityDto"
|
|
3416
|
+
"401":
|
|
3417
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3418
|
+
"403":
|
|
3419
|
+
$ref: "#/components/responses/Forbidden"
|
|
3420
|
+
"404":
|
|
3421
|
+
description: Workspace does not exist
|
|
3422
|
+
content:
|
|
3423
|
+
application/json:
|
|
3424
|
+
schema:
|
|
3425
|
+
$ref: "#/components/schemas/ErrorMessageDto"
|
|
3426
|
+
|
|
3427
|
+
/workspaces/{workspaceId}/your-ai-journey/ai-spend:
|
|
3428
|
+
get:
|
|
3429
|
+
tags: [YourAiJourney]
|
|
3430
|
+
summary: AI tool spend and usage aggregated by week and provider
|
|
3431
|
+
description: >
|
|
3432
|
+
Returns token usage and spend aggregated from connected AI tool sources (e.g. Cursor)
|
|
3433
|
+
over the requested range, broken down by week and provider. Covers issue #274.
|
|
3434
|
+
Results are cached for 60 seconds.
|
|
3435
|
+
operationId: getYourAiJourneyAiSpend
|
|
3436
|
+
parameters:
|
|
3437
|
+
- $ref: "#/components/parameters/WorkspaceId"
|
|
3438
|
+
- name: rangeId
|
|
3439
|
+
in: query
|
|
3440
|
+
schema:
|
|
3441
|
+
type: string
|
|
3442
|
+
enum: [4w, 8w, q]
|
|
3443
|
+
default: 4w
|
|
3444
|
+
description: Time range — `4w` (4 weeks), `8w` (8 weeks), or `q` (quarter, 12 weeks).
|
|
3445
|
+
responses:
|
|
3446
|
+
"200":
|
|
3447
|
+
description: AI spend aggregation
|
|
3448
|
+
content:
|
|
3449
|
+
application/json:
|
|
3450
|
+
schema:
|
|
3451
|
+
$ref: "#/components/schemas/YourAiJourneyAiSpendDto"
|
|
3452
|
+
"401":
|
|
3453
|
+
$ref: "#/components/responses/Unauthorized"
|
|
3454
|
+
"403":
|
|
3455
|
+
$ref: "#/components/responses/Forbidden"
|
|
3456
|
+
"404":
|
|
3457
|
+
description: Workspace does not exist
|
|
3060
3458
|
content:
|
|
3061
3459
|
application/json:
|
|
3062
3460
|
schema:
|
|
@@ -3123,6 +3521,129 @@ components:
|
|
|
3123
3521
|
schema:
|
|
3124
3522
|
type: string
|
|
3125
3523
|
default: All departments
|
|
3524
|
+
PaginationLimit:
|
|
3525
|
+
name: limit
|
|
3526
|
+
in: query
|
|
3527
|
+
required: false
|
|
3528
|
+
description: Page size (default 25, max 100).
|
|
3529
|
+
schema:
|
|
3530
|
+
type: integer
|
|
3531
|
+
minimum: 1
|
|
3532
|
+
maximum: 100
|
|
3533
|
+
default: 25
|
|
3534
|
+
PaginationOffset:
|
|
3535
|
+
name: offset
|
|
3536
|
+
in: query
|
|
3537
|
+
required: false
|
|
3538
|
+
description: Zero-based row offset into the filtered, sorted result set.
|
|
3539
|
+
schema:
|
|
3540
|
+
type: integer
|
|
3541
|
+
minimum: 0
|
|
3542
|
+
default: 0
|
|
3543
|
+
PaginationOrder:
|
|
3544
|
+
name: order
|
|
3545
|
+
in: query
|
|
3546
|
+
required: false
|
|
3547
|
+
description: Sort direction.
|
|
3548
|
+
schema:
|
|
3549
|
+
type: string
|
|
3550
|
+
enum: [asc, desc]
|
|
3551
|
+
default: desc
|
|
3552
|
+
ReadinessRepoSort:
|
|
3553
|
+
name: sort
|
|
3554
|
+
in: query
|
|
3555
|
+
required: false
|
|
3556
|
+
description: Allowlisted repository sort field.
|
|
3557
|
+
schema:
|
|
3558
|
+
type: string
|
|
3559
|
+
enum: [repoName, overallScore, lastAnalyzed, language]
|
|
3560
|
+
default: overallScore
|
|
3561
|
+
ReadinessRepoSearch:
|
|
3562
|
+
name: search
|
|
3563
|
+
in: query
|
|
3564
|
+
required: false
|
|
3565
|
+
description: Case-insensitive filter on repository name, language, or provider slug.
|
|
3566
|
+
schema:
|
|
3567
|
+
type: string
|
|
3568
|
+
maxLength: 256
|
|
3569
|
+
ReadinessRepoLanguage:
|
|
3570
|
+
name: language
|
|
3571
|
+
in: query
|
|
3572
|
+
required: false
|
|
3573
|
+
description: Exact language filter (e.g. `typescript`).
|
|
3574
|
+
schema:
|
|
3575
|
+
type: string
|
|
3576
|
+
maxLength: 64
|
|
3577
|
+
ReadinessFixSort:
|
|
3578
|
+
name: sort
|
|
3579
|
+
in: query
|
|
3580
|
+
required: false
|
|
3581
|
+
description: Allowlisted fix-queue sort field.
|
|
3582
|
+
schema:
|
|
3583
|
+
type: string
|
|
3584
|
+
enum: [createdAt, repoName, severity, status]
|
|
3585
|
+
default: createdAt
|
|
3586
|
+
ReadinessFixStatusFilter:
|
|
3587
|
+
name: status
|
|
3588
|
+
in: query
|
|
3589
|
+
required: false
|
|
3590
|
+
description: Filter fixes by workflow status.
|
|
3591
|
+
schema:
|
|
3592
|
+
type: string
|
|
3593
|
+
enum: [queued, generating, pr-created, merged, failed]
|
|
3594
|
+
ReadinessFixRepoIdFilter:
|
|
3595
|
+
name: repoId
|
|
3596
|
+
in: query
|
|
3597
|
+
required: false
|
|
3598
|
+
description: Filter fixes to a single workspace repository id.
|
|
3599
|
+
schema:
|
|
3600
|
+
type: string
|
|
3601
|
+
format: uuid
|
|
3602
|
+
ReadinessFixSearch:
|
|
3603
|
+
name: search
|
|
3604
|
+
in: query
|
|
3605
|
+
required: false
|
|
3606
|
+
description: Case-insensitive filter on repo name, issue title, label, or description.
|
|
3607
|
+
schema:
|
|
3608
|
+
type: string
|
|
3609
|
+
maxLength: 256
|
|
3610
|
+
GithubRepoLimit:
|
|
3611
|
+
name: repoLimit
|
|
3612
|
+
in: query
|
|
3613
|
+
required: false
|
|
3614
|
+
description: Page size for the nested installation repo list (default 25, max 100).
|
|
3615
|
+
schema:
|
|
3616
|
+
type: integer
|
|
3617
|
+
minimum: 1
|
|
3618
|
+
maximum: 100
|
|
3619
|
+
default: 25
|
|
3620
|
+
GithubRepoOffset:
|
|
3621
|
+
name: repoOffset
|
|
3622
|
+
in: query
|
|
3623
|
+
required: false
|
|
3624
|
+
description: Zero-based offset into the merged installation repo list.
|
|
3625
|
+
schema:
|
|
3626
|
+
type: integer
|
|
3627
|
+
minimum: 0
|
|
3628
|
+
default: 0
|
|
3629
|
+
GithubRepoSort:
|
|
3630
|
+
name: repoSort
|
|
3631
|
+
in: query
|
|
3632
|
+
required: false
|
|
3633
|
+
description: Allowlisted GitHub repo sort field.
|
|
3634
|
+
schema:
|
|
3635
|
+
type: string
|
|
3636
|
+
enum: [name, updatedAt]
|
|
3637
|
+
default: name
|
|
3638
|
+
GithubRepoOrder:
|
|
3639
|
+
name: repoOrder
|
|
3640
|
+
in: query
|
|
3641
|
+
required: false
|
|
3642
|
+
description: Sort direction for the nested installation repo list.
|
|
3643
|
+
schema:
|
|
3644
|
+
type: string
|
|
3645
|
+
enum: [asc, desc]
|
|
3646
|
+
default: asc
|
|
3126
3647
|
|
|
3127
3648
|
responses:
|
|
3128
3649
|
Unauthorized:
|
|
@@ -3624,6 +4145,12 @@ components:
|
|
|
3624
4145
|
type: string
|
|
3625
4146
|
teamName:
|
|
3626
4147
|
type: string
|
|
4148
|
+
notInOrgChart:
|
|
4149
|
+
type: boolean
|
|
4150
|
+
description: True when the contributor GitHub login is not mapped in the org chart.
|
|
4151
|
+
githubLogin:
|
|
4152
|
+
type: string
|
|
4153
|
+
description: GitHub login for unattributed contributors (when notInOrgChart is true).
|
|
3627
4154
|
weeks:
|
|
3628
4155
|
type: array
|
|
3629
4156
|
items:
|
|
@@ -3647,7 +4174,7 @@ components:
|
|
|
3647
4174
|
format: date-time
|
|
3648
4175
|
weeks:
|
|
3649
4176
|
type: array
|
|
3650
|
-
description: Portfolio aggregate merged PR counts (
|
|
4177
|
+
description: Portfolio aggregate merged PR counts from org-scope metrics (all merged PRs in window).
|
|
3651
4178
|
items:
|
|
3652
4179
|
$ref: "#/components/schemas/ProductivityInsightsMergedPrTrendWeekDto"
|
|
3653
4180
|
contributors:
|
|
@@ -4532,6 +5059,11 @@ components:
|
|
|
4532
5059
|
private:
|
|
4533
5060
|
type: boolean
|
|
4534
5061
|
nullable: true
|
|
5062
|
+
updatedAt:
|
|
5063
|
+
type: string
|
|
5064
|
+
format: date-time
|
|
5065
|
+
nullable: true
|
|
5066
|
+
description: Last push or metadata update from GitHub when available.
|
|
4535
5067
|
|
|
4536
5068
|
GithubMissingPermissionDto:
|
|
4537
5069
|
type: object
|
|
@@ -4560,9 +5092,9 @@ components:
|
|
|
4560
5092
|
allOf:
|
|
4561
5093
|
- $ref: "#/components/schemas/GithubAccountDto"
|
|
4562
5094
|
repos:
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
5095
|
+
allOf:
|
|
5096
|
+
- $ref: "#/components/schemas/GithubInstalledRepoListDto"
|
|
5097
|
+
description: Paginated repositories granted on this installation (same repoLimit/repoOffset as top-level repos).
|
|
4566
5098
|
manageUrl:
|
|
4567
5099
|
type: string
|
|
4568
5100
|
format: uri
|
|
@@ -4606,10 +5138,10 @@ components:
|
|
|
4606
5138
|
allOf:
|
|
4607
5139
|
- $ref: "#/components/schemas/GithubAccountDto"
|
|
4608
5140
|
repos:
|
|
4609
|
-
type: array
|
|
4610
|
-
items:
|
|
4611
|
-
$ref: "#/components/schemas/GithubInstalledRepoDto"
|
|
4612
5141
|
nullable: true
|
|
5142
|
+
allOf:
|
|
5143
|
+
- $ref: "#/components/schemas/GithubInstalledRepoListDto"
|
|
5144
|
+
description: Paginated merged installation repositories when `installed` is true.
|
|
4613
5145
|
manageUrl:
|
|
4614
5146
|
type: string
|
|
4615
5147
|
format: uri
|
|
@@ -5157,9 +5689,98 @@ components:
|
|
|
5157
5689
|
type: string
|
|
5158
5690
|
enum: [open, pr-pending, fixed]
|
|
5159
5691
|
|
|
5692
|
+
PageMetaDto:
|
|
5693
|
+
type: object
|
|
5694
|
+
required: [total, limit, offset]
|
|
5695
|
+
properties:
|
|
5696
|
+
total:
|
|
5697
|
+
type: integer
|
|
5698
|
+
minimum: 0
|
|
5699
|
+
description: Total rows matching filters (full workspace, not just this page).
|
|
5700
|
+
limit:
|
|
5701
|
+
type: integer
|
|
5702
|
+
minimum: 1
|
|
5703
|
+
maximum: 100
|
|
5704
|
+
offset:
|
|
5705
|
+
type: integer
|
|
5706
|
+
minimum: 0
|
|
5707
|
+
|
|
5708
|
+
ReadinessRepoListDto:
|
|
5709
|
+
allOf:
|
|
5710
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5711
|
+
- type: object
|
|
5712
|
+
required: [items]
|
|
5713
|
+
properties:
|
|
5714
|
+
items:
|
|
5715
|
+
type: array
|
|
5716
|
+
items:
|
|
5717
|
+
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
5718
|
+
|
|
5719
|
+
ReadinessFixListDto:
|
|
5720
|
+
allOf:
|
|
5721
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5722
|
+
- type: object
|
|
5723
|
+
required: [items]
|
|
5724
|
+
properties:
|
|
5725
|
+
items:
|
|
5726
|
+
type: array
|
|
5727
|
+
items:
|
|
5728
|
+
$ref: "#/components/schemas/FixRequestDto"
|
|
5729
|
+
|
|
5730
|
+
AgenticFoundationDimensionAggregateDto:
|
|
5731
|
+
type: object
|
|
5732
|
+
required: [dimensionId, averageScorePercent, repoCount]
|
|
5733
|
+
properties:
|
|
5734
|
+
dimensionId:
|
|
5735
|
+
$ref: "#/components/schemas/ReadinessDimensionId"
|
|
5736
|
+
averageScorePercent:
|
|
5737
|
+
type: integer
|
|
5738
|
+
minimum: 0
|
|
5739
|
+
maximum: 100
|
|
5740
|
+
description: Mean dimension score percent across repos with maxScore > 0.
|
|
5741
|
+
repoCount:
|
|
5742
|
+
type: integer
|
|
5743
|
+
minimum: 0
|
|
5744
|
+
description: Repositories with a scored row for this dimension.
|
|
5745
|
+
|
|
5746
|
+
ReadinessFixStatusSummaryDto:
|
|
5747
|
+
type: object
|
|
5748
|
+
required: [queued, generating, prCreated, merged, failed, total]
|
|
5749
|
+
properties:
|
|
5750
|
+
queued:
|
|
5751
|
+
type: integer
|
|
5752
|
+
minimum: 0
|
|
5753
|
+
generating:
|
|
5754
|
+
type: integer
|
|
5755
|
+
minimum: 0
|
|
5756
|
+
prCreated:
|
|
5757
|
+
type: integer
|
|
5758
|
+
minimum: 0
|
|
5759
|
+
description: Count of fixes with status `pr-created`.
|
|
5760
|
+
merged:
|
|
5761
|
+
type: integer
|
|
5762
|
+
minimum: 0
|
|
5763
|
+
failed:
|
|
5764
|
+
type: integer
|
|
5765
|
+
minimum: 0
|
|
5766
|
+
total:
|
|
5767
|
+
type: integer
|
|
5768
|
+
minimum: 0
|
|
5769
|
+
|
|
5770
|
+
GithubInstalledRepoListDto:
|
|
5771
|
+
allOf:
|
|
5772
|
+
- $ref: "#/components/schemas/PageMetaDto"
|
|
5773
|
+
- type: object
|
|
5774
|
+
required: [items]
|
|
5775
|
+
properties:
|
|
5776
|
+
items:
|
|
5777
|
+
type: array
|
|
5778
|
+
items:
|
|
5779
|
+
$ref: "#/components/schemas/GithubInstalledRepoDto"
|
|
5780
|
+
|
|
5160
5781
|
AgenticFoundationDashboardDto:
|
|
5161
5782
|
type: object
|
|
5162
|
-
required: [workspaceId, generatedAt, summary,
|
|
5783
|
+
required: [workspaceId, generatedAt, summary, dimensionAggregates, fixStatusSummary]
|
|
5163
5784
|
properties:
|
|
5164
5785
|
workspaceId:
|
|
5165
5786
|
type: string
|
|
@@ -5169,14 +5790,13 @@ components:
|
|
|
5169
5790
|
format: date-time
|
|
5170
5791
|
summary:
|
|
5171
5792
|
$ref: "#/components/schemas/AgenticFoundationDashboardSummaryDto"
|
|
5172
|
-
|
|
5173
|
-
type: array
|
|
5174
|
-
items:
|
|
5175
|
-
$ref: "#/components/schemas/RepoReadinessScoreDto"
|
|
5176
|
-
issueQueue:
|
|
5793
|
+
dimensionAggregates:
|
|
5177
5794
|
type: array
|
|
5178
5795
|
items:
|
|
5179
|
-
$ref: "#/components/schemas/
|
|
5796
|
+
$ref: "#/components/schemas/AgenticFoundationDimensionAggregateDto"
|
|
5797
|
+
description: Per-dimension average score bars for overview UI (full workspace aggregates).
|
|
5798
|
+
fixStatusSummary:
|
|
5799
|
+
$ref: "#/components/schemas/ReadinessFixStatusSummaryDto"
|
|
5180
5800
|
|
|
5181
5801
|
FixRequestDto:
|
|
5182
5802
|
type: object
|
|
@@ -5613,3 +6233,219 @@ components:
|
|
|
5613
6233
|
storagePath:
|
|
5614
6234
|
type: string
|
|
5615
6235
|
description: Path in `org-charts` bucket after Supabase upload
|
|
6236
|
+
|
|
6237
|
+
# ── Your AI Journey schemas ─────────────────────────────────────────────
|
|
6238
|
+
|
|
6239
|
+
YourAiJourneyPrSignalsWeekDto:
|
|
6240
|
+
type: object
|
|
6241
|
+
required: [bucketStart, bucketEnd, weekLabel, prsPerDeveloperPerWeek, changeFailureRatePercent]
|
|
6242
|
+
properties:
|
|
6243
|
+
bucketStart:
|
|
6244
|
+
type: string
|
|
6245
|
+
format: date-time
|
|
6246
|
+
bucketEnd:
|
|
6247
|
+
type: string
|
|
6248
|
+
format: date-time
|
|
6249
|
+
weekLabel:
|
|
6250
|
+
type: string
|
|
6251
|
+
description: Display label in MM/DD format.
|
|
6252
|
+
prsPerDeveloperPerWeek:
|
|
6253
|
+
type: number
|
|
6254
|
+
changeFailureRatePercent:
|
|
6255
|
+
type: number
|
|
6256
|
+
|
|
6257
|
+
YourAiJourneyPrSignalsDto:
|
|
6258
|
+
type: object
|
|
6259
|
+
required: [workspaceId, generatedAt, windowStart, windowEnd, weeks, summary]
|
|
6260
|
+
properties:
|
|
6261
|
+
workspaceId:
|
|
6262
|
+
type: string
|
|
6263
|
+
format: uuid
|
|
6264
|
+
generatedAt:
|
|
6265
|
+
type: string
|
|
6266
|
+
format: date-time
|
|
6267
|
+
windowStart:
|
|
6268
|
+
type: string
|
|
6269
|
+
format: date-time
|
|
6270
|
+
windowEnd:
|
|
6271
|
+
type: string
|
|
6272
|
+
format: date-time
|
|
6273
|
+
weeks:
|
|
6274
|
+
type: array
|
|
6275
|
+
items:
|
|
6276
|
+
$ref: "#/components/schemas/YourAiJourneyPrSignalsWeekDto"
|
|
6277
|
+
summary:
|
|
6278
|
+
type: object
|
|
6279
|
+
required: [avgPrsPerDeveloperPerWeek, avgFailureRatePercent, prVelocityDeltaPercent]
|
|
6280
|
+
properties:
|
|
6281
|
+
avgPrsPerDeveloperPerWeek:
|
|
6282
|
+
type: number
|
|
6283
|
+
avgFailureRatePercent:
|
|
6284
|
+
type: number
|
|
6285
|
+
prVelocityDeltaPercent:
|
|
6286
|
+
type: number
|
|
6287
|
+
|
|
6288
|
+
YourAiJourneyReadinessDimensionDto:
|
|
6289
|
+
type: object
|
|
6290
|
+
required: [dimensionId, name, totalScore, maxScore, percent]
|
|
6291
|
+
properties:
|
|
6292
|
+
dimensionId:
|
|
6293
|
+
type: string
|
|
6294
|
+
name:
|
|
6295
|
+
type: string
|
|
6296
|
+
totalScore:
|
|
6297
|
+
type: number
|
|
6298
|
+
maxScore:
|
|
6299
|
+
type: number
|
|
6300
|
+
percent:
|
|
6301
|
+
type: number
|
|
6302
|
+
description: Rounded percentage 0–100.
|
|
6303
|
+
|
|
6304
|
+
YourAiJourneyReadinessAggregateDto:
|
|
6305
|
+
type: object
|
|
6306
|
+
required: [workspaceId, generatedAt, dimensions, summary]
|
|
6307
|
+
properties:
|
|
6308
|
+
workspaceId:
|
|
6309
|
+
type: string
|
|
6310
|
+
format: uuid
|
|
6311
|
+
generatedAt:
|
|
6312
|
+
type: string
|
|
6313
|
+
format: date-time
|
|
6314
|
+
dimensions:
|
|
6315
|
+
type: array
|
|
6316
|
+
items:
|
|
6317
|
+
$ref: "#/components/schemas/YourAiJourneyReadinessDimensionDto"
|
|
6318
|
+
summary:
|
|
6319
|
+
type: object
|
|
6320
|
+
required: [avgScore, repoCount, fixRate, totalOpenIssues, totalFixedIssues]
|
|
6321
|
+
properties:
|
|
6322
|
+
avgScore:
|
|
6323
|
+
type: number
|
|
6324
|
+
repoCount:
|
|
6325
|
+
type: integer
|
|
6326
|
+
fixRate:
|
|
6327
|
+
type: number
|
|
6328
|
+
totalOpenIssues:
|
|
6329
|
+
type: integer
|
|
6330
|
+
totalFixedIssues:
|
|
6331
|
+
type: integer
|
|
6332
|
+
|
|
6333
|
+
YourAiJourneyAnalyticsDto:
|
|
6334
|
+
type: object
|
|
6335
|
+
required: [workspaceId, generatedAt, windowStart, windowEnd, journey, readiness, prSignals]
|
|
6336
|
+
properties:
|
|
6337
|
+
workspaceId:
|
|
6338
|
+
type: string
|
|
6339
|
+
format: uuid
|
|
6340
|
+
generatedAt:
|
|
6341
|
+
type: string
|
|
6342
|
+
format: date-time
|
|
6343
|
+
windowStart:
|
|
6344
|
+
type: string
|
|
6345
|
+
format: date-time
|
|
6346
|
+
windowEnd:
|
|
6347
|
+
type: string
|
|
6348
|
+
format: date-time
|
|
6349
|
+
journey:
|
|
6350
|
+
type: object
|
|
6351
|
+
required: [completedSteps, updatedAt]
|
|
6352
|
+
properties:
|
|
6353
|
+
completedSteps:
|
|
6354
|
+
type: array
|
|
6355
|
+
items:
|
|
6356
|
+
type: string
|
|
6357
|
+
updatedAt:
|
|
6358
|
+
type: string
|
|
6359
|
+
format: date-time
|
|
6360
|
+
nullable: true
|
|
6361
|
+
readiness:
|
|
6362
|
+
type: object
|
|
6363
|
+
required: [avgScore, repoCount, fixRate, totalOpenIssues, totalFixedIssues]
|
|
6364
|
+
properties:
|
|
6365
|
+
avgScore:
|
|
6366
|
+
type: number
|
|
6367
|
+
repoCount:
|
|
6368
|
+
type: integer
|
|
6369
|
+
fixRate:
|
|
6370
|
+
type: number
|
|
6371
|
+
totalOpenIssues:
|
|
6372
|
+
type: integer
|
|
6373
|
+
totalFixedIssues:
|
|
6374
|
+
type: integer
|
|
6375
|
+
prSignals:
|
|
6376
|
+
type: object
|
|
6377
|
+
required: [avgPrsPerDeveloperPerWeek, prVelocityDeltaPercent, avgFailureRatePercent]
|
|
6378
|
+
properties:
|
|
6379
|
+
avgPrsPerDeveloperPerWeek:
|
|
6380
|
+
type: number
|
|
6381
|
+
prVelocityDeltaPercent:
|
|
6382
|
+
type: number
|
|
6383
|
+
avgFailureRatePercent:
|
|
6384
|
+
type: number
|
|
6385
|
+
|
|
6386
|
+
YourAiJourneyAiSpendWeekDto:
|
|
6387
|
+
type: object
|
|
6388
|
+
required: [bucketStart, bucketEnd, weekLabel, mergedPrCount, tokenCount]
|
|
6389
|
+
properties:
|
|
6390
|
+
bucketStart:
|
|
6391
|
+
type: string
|
|
6392
|
+
format: date-time
|
|
6393
|
+
bucketEnd:
|
|
6394
|
+
type: string
|
|
6395
|
+
format: date-time
|
|
6396
|
+
weekLabel:
|
|
6397
|
+
type: string
|
|
6398
|
+
mergedPrCount:
|
|
6399
|
+
type: integer
|
|
6400
|
+
tokenCount:
|
|
6401
|
+
type: integer
|
|
6402
|
+
|
|
6403
|
+
YourAiJourneyAiSpendDto:
|
|
6404
|
+
type: object
|
|
6405
|
+
required: [workspaceId, generatedAt, windowStart, windowEnd, totalSpendCents, totalTokenCount, activeUsers, aiAssistedPrRatio, prThroughputDeltaPercent, usageDeltaPercent, weeks, providers]
|
|
6406
|
+
properties:
|
|
6407
|
+
workspaceId:
|
|
6408
|
+
type: string
|
|
6409
|
+
format: uuid
|
|
6410
|
+
generatedAt:
|
|
6411
|
+
type: string
|
|
6412
|
+
format: date-time
|
|
6413
|
+
windowStart:
|
|
6414
|
+
type: string
|
|
6415
|
+
format: date-time
|
|
6416
|
+
windowEnd:
|
|
6417
|
+
type: string
|
|
6418
|
+
format: date-time
|
|
6419
|
+
totalSpendCents:
|
|
6420
|
+
type: integer
|
|
6421
|
+
totalTokenCount:
|
|
6422
|
+
type: integer
|
|
6423
|
+
activeUsers:
|
|
6424
|
+
type: integer
|
|
6425
|
+
aiAssistedPrRatio:
|
|
6426
|
+
type: number
|
|
6427
|
+
description: Fraction 0–1 of PRs that are AI-assisted.
|
|
6428
|
+
prThroughputDeltaPercent:
|
|
6429
|
+
type: number
|
|
6430
|
+
usageDeltaPercent:
|
|
6431
|
+
type: number
|
|
6432
|
+
weeks:
|
|
6433
|
+
type: array
|
|
6434
|
+
items:
|
|
6435
|
+
$ref: "#/components/schemas/YourAiJourneyAiSpendWeekDto"
|
|
6436
|
+
providers:
|
|
6437
|
+
type: array
|
|
6438
|
+
items:
|
|
6439
|
+
type: object
|
|
6440
|
+
required: [providerId, providerName, tokenCount, spendCents, activeUsers]
|
|
6441
|
+
properties:
|
|
6442
|
+
providerId:
|
|
6443
|
+
type: string
|
|
6444
|
+
providerName:
|
|
6445
|
+
type: string
|
|
6446
|
+
tokenCount:
|
|
6447
|
+
type: integer
|
|
6448
|
+
spendCents:
|
|
6449
|
+
type: integer
|
|
6450
|
+
activeUsers:
|
|
6451
|
+
type: integer
|