@thinkai/tai-api-contract 2.6.0 → 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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.6.0
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}/...`.
@@ -1505,6 +1505,10 @@ paths:
1505
1505
  schema:
1506
1506
  type: boolean
1507
1507
  default: false
1508
+ - $ref: "#/components/parameters/GithubRepoLimit"
1509
+ - $ref: "#/components/parameters/GithubRepoOffset"
1510
+ - $ref: "#/components/parameters/GithubRepoSort"
1511
+ - $ref: "#/components/parameters/GithubRepoOrder"
1508
1512
  responses:
1509
1513
  "200":
1510
1514
  description: Installation status
@@ -2122,19 +2126,33 @@ paths:
2122
2126
  /workspaces/{workspaceId}/readiness/repos:
2123
2127
  get:
2124
2128
  tags: [RepositoryReadiness]
2125
- summary: List repo readiness scores
2129
+ summary: List repo readiness scores (paginated)
2126
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).
2127
2135
  parameters:
2128
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"
2129
2143
  responses:
2130
2144
  "200":
2131
- description: Repositories analyzed
2145
+ description: Paginated repositories analyzed
2132
2146
  content:
2133
2147
  application/json:
2134
2148
  schema:
2135
- type: array
2136
- items:
2137
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2138
2156
  "401":
2139
2157
  $ref: "#/components/responses/Unauthorized"
2140
2158
  "403":
@@ -2269,18 +2287,19 @@ paths:
2269
2287
  /workspaces/{workspaceId}/agentic-foundation/dashboard:
2270
2288
  get:
2271
2289
  tags: [AgenticFoundation]
2272
- summary: Agentic Foundation dashboard
2290
+ summary: Agentic Foundation dashboard summary
2273
2291
  description: >
2274
- Returns stored repository readiness scorecards plus a flattened issue queue for the
2275
- Agentic Foundation dashboard surfaces. This is read-only and does not run scoring on
2276
- the request path (issue #279). Field `generatedAt` is the server timestamp when this JSON
2277
- payload was assembled; it is not the same as per-repo `lastAnalyzed` on `RepoReadinessScoreDto`.
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.
2278
2297
  operationId: getAgenticFoundationDashboard
2279
2298
  parameters:
2280
2299
  - $ref: "#/components/parameters/WorkspaceId"
2281
2300
  responses:
2282
2301
  "200":
2283
- description: Dashboard scorecards and issue queue
2302
+ description: Dashboard summary and aggregates
2284
2303
  content:
2285
2304
  application/json:
2286
2305
  schema:
@@ -2296,8 +2315,14 @@ paths:
2296
2315
  averageOverallScore: 0
2297
2316
  issueCount: 0
2298
2317
  criticalIssueCount: 0
2299
- repos: []
2300
- issueQueue: []
2318
+ dimensionAggregates: []
2319
+ fixStatusSummary:
2320
+ queued: 0
2321
+ generating: 0
2322
+ prCreated: 0
2323
+ merged: 0
2324
+ failed: 0
2325
+ total: 0
2301
2326
  "401":
2302
2327
  $ref: "#/components/responses/Unauthorized"
2303
2328
  "403":
@@ -2319,39 +2344,53 @@ paths:
2319
2344
  operationId: getAgenticFoundationAgenticReadiness
2320
2345
  parameters:
2321
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"
2322
2353
  responses:
2323
2354
  "200":
2324
- description: Repositories with ai-agent-readiness slice
2355
+ description: Paginated repositories with ai-agent-readiness slice
2325
2356
  content:
2326
2357
  application/json:
2327
2358
  schema:
2328
- type: array
2329
- items:
2330
- $ref: "#/components/schemas/RepoReadinessScoreDto"
2359
+ $ref: "#/components/schemas/ReadinessRepoListDto"
2331
2360
  examples:
2332
2361
  singleRepoSlice:
2333
2362
  summary: One repo, single pillar dimension
2334
2363
  value:
2335
- - repoId: 00000000-0000-0000-0000-000000000002
2336
- repoName: api-gateway
2337
- language: typescript
2338
- overallScore: 67
2339
- dimensions:
2340
- - dimensionId: ai-agent-readiness
2341
- score: 2
2342
- maxScore: 3
2343
- issues: []
2344
- lastAnalyzed: "2026-05-12T12:00:00.000Z"
2345
- teamId: null
2346
- provider:
2347
- kind: github
2348
- slug: acme/api-gateway
2349
- webUrl: https://github.com/acme/api-gateway
2350
- defaultBranch: main
2351
- externalId: null
2352
- hostBaseUrl: null
2353
- analysisStatus: idle
2354
- activeRunId: null
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"
2355
2394
  "401":
2356
2395
  $ref: "#/components/responses/Unauthorized"
2357
2396
  "403":
@@ -2371,15 +2410,25 @@ paths:
2371
2410
  operationId: getAgenticFoundationRepositoryHealth
2372
2411
  parameters:
2373
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"
2374
2419
  responses:
2375
2420
  "200":
2376
- description: Repositories with repo-hygiene slice
2421
+ description: Paginated repositories with repo-hygiene slice
2377
2422
  content:
2378
2423
  application/json:
2379
2424
  schema:
2380
- type: array
2381
- items:
2382
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2383
2432
  "401":
2384
2433
  $ref: "#/components/responses/Unauthorized"
2385
2434
  "403":
@@ -2399,15 +2448,25 @@ paths:
2399
2448
  operationId: getAgenticFoundationCodebaseQuality
2400
2449
  parameters:
2401
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"
2402
2457
  responses:
2403
2458
  "200":
2404
- description: Repositories with stack-quality slice
2459
+ description: Paginated repositories with stack-quality slice
2405
2460
  content:
2406
2461
  application/json:
2407
2462
  schema:
2408
- type: array
2409
- items:
2410
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2411
2470
  "401":
2412
2471
  $ref: "#/components/responses/Unauthorized"
2413
2472
  "403":
@@ -2427,15 +2486,25 @@ paths:
2427
2486
  operationId: getAgenticFoundationTestQa
2428
2487
  parameters:
2429
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"
2430
2495
  responses:
2431
2496
  "200":
2432
- description: Repositories with tests-qa slice
2497
+ description: Paginated repositories with tests-qa slice
2433
2498
  content:
2434
2499
  application/json:
2435
2500
  schema:
2436
- type: array
2437
- items:
2438
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2439
2508
  "401":
2440
2509
  $ref: "#/components/responses/Unauthorized"
2441
2510
  "403":
@@ -2455,15 +2524,25 @@ paths:
2455
2524
  operationId: getAgenticFoundationObservability
2456
2525
  parameters:
2457
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"
2458
2533
  responses:
2459
2534
  "200":
2460
- description: Repositories with observability slice
2535
+ description: Paginated repositories with observability slice
2461
2536
  content:
2462
2537
  application/json:
2463
2538
  schema:
2464
- type: array
2465
- items:
2466
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2467
2546
  "401":
2468
2547
  $ref: "#/components/responses/Unauthorized"
2469
2548
  "403":
@@ -2483,15 +2562,25 @@ paths:
2483
2562
  operationId: getAgenticFoundationApiContract
2484
2563
  parameters:
2485
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"
2486
2571
  responses:
2487
2572
  "200":
2488
- description: Repositories with api-contracts slice
2573
+ description: Paginated repositories with api-contracts slice
2489
2574
  content:
2490
2575
  application/json:
2491
2576
  schema:
2492
- type: array
2493
- items:
2494
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2495
2584
  "401":
2496
2585
  $ref: "#/components/responses/Unauthorized"
2497
2586
  "403":
@@ -2511,15 +2600,25 @@ paths:
2511
2600
  operationId: getAgenticFoundationPlatformGovernance
2512
2601
  parameters:
2513
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"
2514
2609
  responses:
2515
2610
  "200":
2516
- description: Repositories with platform-governance slice
2611
+ description: Paginated repositories with platform-governance slice
2517
2612
  content:
2518
2613
  application/json:
2519
2614
  schema:
2520
- type: array
2521
- items:
2522
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2523
2622
  "401":
2524
2623
  $ref: "#/components/responses/Unauthorized"
2525
2624
  "403":
@@ -2539,15 +2638,25 @@ paths:
2539
2638
  operationId: getAgenticFoundationDeliveryGovernance
2540
2639
  parameters:
2541
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"
2542
2647
  responses:
2543
2648
  "200":
2544
- description: Repositories with delivery slice
2649
+ description: Paginated repositories with delivery slice
2545
2650
  content:
2546
2651
  application/json:
2547
2652
  schema:
2548
- type: array
2549
- items:
2550
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2551
2660
  "401":
2552
2661
  $ref: "#/components/responses/Unauthorized"
2553
2662
  "403":
@@ -2569,15 +2678,25 @@ paths:
2569
2678
  operationId: getAgenticFoundationAiResolutionHub
2570
2679
  parameters:
2571
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"
2572
2687
  responses:
2573
2688
  "200":
2574
2689
  description: Full repository readiness scorecards
2575
2690
  content:
2576
2691
  application/json:
2577
2692
  schema:
2578
- type: array
2579
- items:
2580
- $ref: "#/components/schemas/RepoReadinessScoreDto"
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"
2581
2700
  "401":
2582
2701
  $ref: "#/components/responses/Unauthorized"
2583
2702
  "403":
@@ -2622,21 +2741,32 @@ paths:
2622
2741
  /workspaces/{workspaceId}/readiness/fixes:
2623
2742
  get:
2624
2743
  tags: [RepositoryReadiness]
2625
- summary: List fix requests
2744
+ summary: List fix requests (paginated)
2626
2745
  description: >
2627
- Returns persisted fix-queue rows for the workspace (newest first). Empty array when none exist.
2746
+ Returns a page of persisted fix-queue rows for the workspace (default newest first).
2628
2747
  operationId: listReadinessFixes
2629
2748
  parameters:
2630
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"
2631
2757
  responses:
2632
2758
  "200":
2633
- description: Fix queue
2759
+ description: Paginated fix queue
2634
2760
  content:
2635
2761
  application/json:
2636
2762
  schema:
2637
- type: array
2638
- items:
2639
- $ref: "#/components/schemas/FixRequestDto"
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"
2640
2770
  "401":
2641
2771
  $ref: "#/components/responses/Unauthorized"
2642
2772
  "403":
@@ -3391,6 +3521,129 @@ components:
3391
3521
  schema:
3392
3522
  type: string
3393
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
3394
3647
 
3395
3648
  responses:
3396
3649
  Unauthorized:
@@ -4806,6 +5059,11 @@ components:
4806
5059
  private:
4807
5060
  type: boolean
4808
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.
4809
5067
 
4810
5068
  GithubMissingPermissionDto:
4811
5069
  type: object
@@ -4834,9 +5092,9 @@ components:
4834
5092
  allOf:
4835
5093
  - $ref: "#/components/schemas/GithubAccountDto"
4836
5094
  repos:
4837
- type: array
4838
- items:
4839
- $ref: "#/components/schemas/GithubInstalledRepoDto"
5095
+ allOf:
5096
+ - $ref: "#/components/schemas/GithubInstalledRepoListDto"
5097
+ description: Paginated repositories granted on this installation (same repoLimit/repoOffset as top-level repos).
4840
5098
  manageUrl:
4841
5099
  type: string
4842
5100
  format: uri
@@ -4880,10 +5138,10 @@ components:
4880
5138
  allOf:
4881
5139
  - $ref: "#/components/schemas/GithubAccountDto"
4882
5140
  repos:
4883
- type: array
4884
- items:
4885
- $ref: "#/components/schemas/GithubInstalledRepoDto"
4886
5141
  nullable: true
5142
+ allOf:
5143
+ - $ref: "#/components/schemas/GithubInstalledRepoListDto"
5144
+ description: Paginated merged installation repositories when `installed` is true.
4887
5145
  manageUrl:
4888
5146
  type: string
4889
5147
  format: uri
@@ -5431,9 +5689,98 @@ components:
5431
5689
  type: string
5432
5690
  enum: [open, pr-pending, fixed]
5433
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
+
5434
5781
  AgenticFoundationDashboardDto:
5435
5782
  type: object
5436
- required: [workspaceId, generatedAt, summary, repos, issueQueue]
5783
+ required: [workspaceId, generatedAt, summary, dimensionAggregates, fixStatusSummary]
5437
5784
  properties:
5438
5785
  workspaceId:
5439
5786
  type: string
@@ -5443,14 +5790,13 @@ components:
5443
5790
  format: date-time
5444
5791
  summary:
5445
5792
  $ref: "#/components/schemas/AgenticFoundationDashboardSummaryDto"
5446
- repos:
5447
- type: array
5448
- items:
5449
- $ref: "#/components/schemas/RepoReadinessScoreDto"
5450
- issueQueue:
5793
+ dimensionAggregates:
5451
5794
  type: array
5452
5795
  items:
5453
- $ref: "#/components/schemas/AgenticFoundationDashboardIssueDto"
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"
5454
5800
 
5455
5801
  FixRequestDto:
5456
5802
  type: object